Включение EntityObject в LINQ к проекции объектов без включения всех столбцов

У меня есть объект с тремя столбцами, a, b, и c. Если я проектирую ObjectSet к объектам анонимного класса:

var ret = e.foos.Select(x => new {
    a = x.a,
    b = x.b
}).ToList();

Затем фактический SQL только включает столбцы, необходимые для заполнения каждого объекта:

SELECT 
[Extent1].[a] AS [a], 
[Extent1].[b] AS [b]
FROM [dbo].[foo] AS [Extent1]

Если я включаю EntityObject как свойство анонимного класса, то все столбцы в объекте включены в SQL, даже при том, что только "a" и "b" вызываются явно:

var ret = e.foos.Select(x => new {
    a = x.a,
    b = x.b,
    o = x
}).ToList();

SELECT 
[Extent1].[a] AS [a], 
[Extent1].[b] AS [b], 
[Extent1].[c] AS [c]
FROM [dbo].[foo] AS [Extent1]

Существует ли способ, которым я могу исключить столбец "c" из того, чтобы быть выбранным от базы данных, все еще имея ссылку на EntityObject в моем анонимном объекте?

1
задан Brian L 27 July 2010 в 02:34
поделиться

2 ответа

Возможно, если вы подумаете о том, что должно произойти, когда вы войдете в ret.oc , вы поймете, что Entity не имеет смысла вести себя так, как вы хотите .

1
ответ дан 2 September 2019 в 22:43
поделиться

Вы спрашиваете, можно ли получить ссылку на сущность, для которой не были заполнены ее свойства? Я не думаю, что это поддерживается. Однако вы получаете почти такую ​​же выгоду от простого извлечения первичного ключа вашего класса сущности, который в любом случае должен быть всем, что вам нужно для идентификации вашей сущности.

1
ответ дан 2 September 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: