NHibernateを使用してASP.NETMVCeコマースアプリを作成しています。エンドユーザーが製品カテゴリの順序を制御できるようにしたいと考えています(単にそれらをアルファベット順に表示するだけではありません)。
通常、(タイプの)OrderIndex / Sort列int
をCategoryテーブルに追加し、プロパティをCategoryドメインクラスに追加します。ただし、問題は、カテゴリが並べ替え、追加、および削除されるときに、この特別なOrderIndex/Sort列を常に管理する必要があることです。呼び出し元がプロパティを直接設定する必要がないように、非表示にして透明にしたいです。
確かに私はこれらすべてを管理するために独自のコードを書くことができましたが、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);
}
これは良いアプローチのように見えますか?劣ったホイールを作り直したくありません。