我有許多子實體的頂級實體。在nhibernate中查找所有最佳實踐
現在,我想要實現FindAll()方法,在這裏我使用這個模式查詢我所有的頂層實體到List。這很好,但我隨後拿到了所有的子對象,Alert:在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");
}
你可以發佈'實體'類定義隨着映射! – Baz1nga
已添加更新。 – Rippo