私は多くの子エンティティを持つ一番上のエンティティを持っています。
ここで、すべての上位エンティティをリストに照会してこのパターンを使用している FindAll() メソッドを実装したいと思います。それは問題ありませんが、それですべての子オブジェクトを取得します。アラート: nhib で N+1 を選択してください。プロファイラー。
すべてのオブジェクトを取得したら、それらを FromMyDomainModel メソッドに送信して、必要な ViewModel に値を抽出します。
using (ITransaction transaction = session.BeginTransaction())
{
List<Property> data =
session.Query<Property>()//I don't need fetch
.ToList();
transaction.Commit();
return EntityViewModel.FromDomainModel(data);
}
もっと良いパターンがあるかもしれませんので、お気軽に投稿してください。
更新:マッピング からのマッピングコードは、私のエンティティコードを理解できます
public PropertyMap()
{
Table("Property");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Version);
Map(x => x.Created);
Map(x => x.Updated);
Map(x => x.Views);
....
Map(x => x.Price);
HasMany(x => x.Photos).KeyColumn("PropertyId").Cascade.All();
}
public PhotoMap()
{
Table("Photo");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.ImageData).CustomSqlType("VARBINARY(MAX)").Length(160000).Not.Nullable();
Map(x => x.ImageMimeType).Not.Nullable();
References(x => x.Property).Column("PropertyId");
}