luk*_*uke 6 c# linq nhibernate lazy-loading projection
我懒得加载集合,并且因为人员表中有这么多字段,我正在编写一个投影函数来仅检索某些属性.它适用于属性,而不是其他实体的集合.如果它们作为代理加载我会很好,我可以稍后得到它们,但是现在它只是加载null.
public IList<Person> ListTop40()
{
var list = _session.CreateCriteria(typeof(Person))
.SetProjection(Projections.ProjectionList()
.Add(Projections.Property("FirstName"))
.Add(Projections.Property("LastName"))
.Add(Projections.Property("Jersey"))
.Add(Projections.Property("FortyYard"))
.Add(Projections.Property("BenchReps"))
.Add(Projections.Property("VertJump"))
.Add(Projections.Property("ProShuttle"))
.Add(Projections.Property("LongJump"))
.Add(Projections.Property("PersonSchoolCollection"))
)
.List<IList>()
.Select(l => new Person() { FirstName = (string)l[0], LastName = (string)l[1], Jersey = (Decimal)l[2], FortyYard = (Decimal)l[3], BenchReps = (Decimal)l[4], VertJump = (Decimal)l[5], ProShuttle = (Decimal)l[6], LongJump = (Decimal)l[7], PersonSchoolCollection = (IList<Person_School>)l[8]});
IList<Person> s = list.ToList();
return s;
}
Run Code Online (Sandbox Code Playgroud)
你有多少房产?我在客户端实体上有大约 30 个,甚至更多,并且在 NH 中加载它时没有问题。
您可能会担心性能,但事实并非如此。(老话:过早的优化是万恶之源”:))
话虽如此 - 我怀疑这样的事情是否得到支持。