В 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? Процесс под примерно так же? Есть ли еще более быстрый способ сделать это?

0 ответов

Другие вопросы по тегам