ドメインオブジェクトに次のように公開されるプロパティがあります。
public virtual IEnumerable<WorkPost> WorkPosts
{
get { return sheetPosts; }
private set
{
Guard.AssertAssignableFrom(value, typeof (IList<WorkPost>));
sheetPosts = value as IList<WorkPost>;
}
}
内部表現はであり、IList<WorkPost>
ご覧のとおり、割り当てられた値(NHibernateからの遅延読み込みプロキシ)は正しいタイプにキャストされます。この実装は、NHibernateプロキシの内部表現に依存するため、口の中で悪い味を与えました。NHibernateがプロキシをリストとして生成することを確認するために、AsList()
宣言を使用してプロパティの流暢なマッピングを作成しました。
HasMany(sheet => sheet.WorkPosts).KeyColumn("sheetId").AsList();
しかし、これは私に要求よりも少し多くを与えました。なぜなら、リストのセマンティクスは、データベースモデルにいくつかの追加のフィールドといくつかの追加のクエリを追加するソートを意味するため(コミット時にソートフィールドが更新されるため)、上記の「AsList」はトーゴ。
プロキシを生成するときにNHibernateが返すインターフェイスのタイプを制御するにはどうすればよいですか?(注:IEnumerable
プロパティの戻り値のタイプを変更することは、私が探している答えではありません:-))