我使用NHibernate的書面方式的ASP.NET MVC的電子商務應用程序,我想最終用戶能夠控制的產品類別排序(不只是讓他們alphebetically出現等)。NHibernate的 - 基於屬性/列+如何管理排序實體?
通常情況下,我會向Category表中添加OrderIndex/Sort列(類型爲int
),並將屬性添加到Category域類。但問題在於不得不經常管理這個特殊的OrderIndex/Sort列,因爲Categories被分類,添加和刪除。我寧願將它隱藏起來並使其透明,以便呼叫者不必直接設置屬性。
當然,我可以寫我自己的代碼來管理這一切,但想知道NHibernate的內置了什麼事情都可能幫助我,或者如果它能夠自動掛接這個屬性了。
如果沒有,那麼我想創建一個OrderedEntity基類的(所有域對象從實體基礎派生),並創建一個IOrderedRepository基礎信息庫以及。就像這樣:
public class Entity
{
public virtual int Id { get; set; }
}
public class OrderedEntity : Entity
{
public virtual int OrderIndex { get; set; }
}
public class Category : OrderedEntity
{
}
public interface IRepository<T> where T : Entity
{
T FromId(int id);
void Save(T entity);
}
public interface IOrderedRepository<T> : IRepository<T> where T : OrderedEntity
{
void MoveUp(int places);
void MoveDown(int places);
}
這是否看起來像一個好方法?我不想重塑一個劣質車輪。