我使用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);
}
这是否看起来像一个好方法?我不想重塑一个劣质车轮。