В Linq to Nhibernate, каков самый дешевый способ выбрать сопоставленный объект nhibernate в структуру для повторного использования?
Я заметил, что если я делаю какие-то тяжелые вычисления, сортировку или что-то, связанное с большим количеством объектов базы данных, гораздо быстрее, если я выбираю только то, что мне нужно, в структуру или класс.
Например, я могу сделать это так:
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 достаточно умным, чтобы избежать создания полного NHObject в варианте 2? Процесс под примерно так же? Есть ли еще более быстрый способ сделать это?