0

我使用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); 
} 

這是否看起來像一個好方法?我不想重塑一個劣質車輪。

回答

1

到目前爲止,我知道Hibernate有一個註釋@OrderBy,您可以在其中指定集合時的排序加載。但是Hibernate不會管理的立場,即當您add或集合中的元素remove

但是,您可以輕鬆做到這一點自己和對父實體,這將跟蹤位置(或方法MoveUpMoveDown你的建議)提供方法addItemremoveItem

相關問題