Я хочу создать объект Entity из оператора LinQ, но не хочу загружать все его столбцы.
В моем объекте ORDERS много столбцов, но я просто хочу получить ссылкуи столбцы OPERATION, так что оператор SQL и результат будут меньше.
Этот оператор LinQ работает правильно и загружает все атрибуты моего объекта:
var orders = (from order in context.ORDERS
select order);
Однако следующий оператор не может загрузить только два свойствамоего объекта
var orders = (from order in context.ORDERS
select new ORDERS
{
REFERENCE = order.REFERENCE,
OPERATION = order.OPERATION
});
Сгенерирована ошибка:
Сущность или сложный тип ModelContextName.ORDERS нельзя создать в запросе LINQ to Entities.
В чем проблема?Разве нельзя частично загрузить объект таким образом?
Заранее благодарю за ответы.
ОТВЕТ
Хорошо, я должен поблагодарить вас обоих, Якимычи Дин, потому что я использую оба ваших ответа, и теперь у меня есть:
var orders = (from order in context.ORDERS
select new
{
REFERENCE = order.REFERENCE,
OPERATION = order.OPERATION,
})
.AsEnumerable()
.Select(o =>
(ORDERS)new ORDERS
{
REFERENCE = o.REFERENCE,
OPERATION = o.OPERATION
}
).ToList().AsQueryable();
И я получаю именно то, что хочу, оператор SQL не идеален, но он возвращает только те 2 столбца, которые мне нужны (и другойстолбец, который содержит для каждой строки «1», но я не знаю, почему на данный момент) - я также попытался построить подобъекты с помощью этого метода, и он работает хорошо.