我有许多子实体的顶级实体。
现在,我想实现 FindAll() 方法,在该方法中我使用此模式将所有顶级实体查询到 List。没关系,但我随后得到了我所有的子对象,警报:在 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");
}