在不包含所有列的LINQ到实体投影中包含EntityObject

时间:2010-07-27 02:34:12

标签: c# linq entity-framework

我有一个包含三列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?

2 个答案:

答案 0 :(得分:1)

也许如果你考虑一下ret.o.c时会发生什么,你就会意识到实体按照你想要的方式行事是没有意义的。

答案 1 :(得分:1)

您是否询问是否可以获取尚未填充其属性的实体引用?我不认为这是支持的。但是,只需检索实体类的主键即可获得几乎同样多的好处,无论如何,这应该是识别实体所需的全部内容。