我注意到如果我正在进行一些繁重的计算,排序或涉及大量数据库对象的事情,如果我只选择我需要的结构或类,那就快得多。
例如我可以这样做:
List<FastObject> testList = session.Query<NHObject>().Select(x => new FastObject{A = x.A, B = x.B}).ToList();
但这不是非常可重复使用。
假设我尝试了几件事。
第一:选项1
FastObject NHObject2FastObject(NHObject toConvert)
{
return new FastObject{A = toConvert.A, B = toConvert.B}
}
List<FastObject> testList = session.Query<NHObject>().Select(x => NHObject2FastObject(x)).ToList();
选项2:
Expression<Func<NHObject, FastObject>> NHObject2FastObjectExp = x => new FastObject{A = x.A, B = x.B};
List<FastObject> testList = session.Query<NHObject>().Select(NHObject2FastObjectExp).ToList();
Nhibernate是否足够智能以避免在选项2中实例化完整的NHObject?这个过程大致相同吗?有没有更快的方法呢?