Entity framework 为什么';这种连接不能与实体框架v4一起使用吗?

Entity framework 为什么';这种连接不能与实体框架v4一起使用吗?,entity-framework,Entity Framework,我使用(仅代码)。如果我这样做 var result = from person in context.People.Include("Cars") select new { person, person.Houses.Count, bar, foo, etc }; 然后,result.First().Cars为空。如果我这样做,它会起作用,但我需要房子。计数: var result = from person in context.People.Include("C

我使用(仅代码)。如果我这样做

var result = from person in context.People.Include("Cars")
             select new { person, person.Houses.Count, bar, foo, etc };
然后,
result.First().Cars
为空。如果我这样做,它会起作用,但我需要
房子。计数

var result = from person in context.People.Include("Cars")
             select person;
实体框架v4似乎不能很好地与对象初始值设定项一起工作

目前的解决方案是:

var result = from person in context.People.Include("Cars").Include("Houses")
             select person;
但表演太可笑了,我要带房子去划船

黑暗中的一枪

是否:

工作?老实说,我认为你的第一个问题应该可以解决。

var result = from person in context.People.Include("Cars")
             select new {  
                 Person = person, 
                 Cars = person.Cars,
                 HouseCount = person.Houses.Count()
             };
是否:

工作?老实说,我认为你的第一个问题应该可以解决

var result = from person in context.People.Include("Cars")
             select new {  
                 Person = person, 
                 Cars = person.Cars,
                 HouseCount = person.Houses.Count()
             };
多余的,当然,但是人。车现在会有人

当然是多余的,但是人。车现在会有人了。

你好,菲利佩

当Include应用于查询时,它 注入额外的“查询范围” 然后将信息发送到查询 稍后在执行查询时使用 实际执行。查询范围 信息被用于内部控制 重写查询,使实体 可以通过 指定的导航属性为 还从数据库和 实现了

当应用其他查询运算符时 在包含之后,我们会尽力保留这一点 查询范围信息。但是, 中指定的查询范围信息 Include不会在查询上流动 用于更改结果类型的运算符 查询的最后一步

例如,在这样的查询中: var结果= 来自上下文中的person.People.Include(“汽车”) 选择新{person,person.Houses.Count,bar,foo等}

由于以下原因,结果类型正在更改 投影操作(选择)位于 类型的结束和最终结果 查询不再是原始查询 包含的实体类型 已应用,因此查询范围为信息 他迷路了。共同建议 避免这是要始终应用包括 最后:

var result = 
    from person in context.People
    select new { person, person.Houses.Count, bar, foo, etc };
var resultWithCars =
    result.Include("Cars");
然而,在这种情况下,结果是 该Include将抛出一个异常 在运行时(与失败相反 (静默)因为查询范围无法 真的适用于匿名者吗 类型

上面描述的所有行为都是由 设计,但因为这是不可能的 用于包含在中引发异常 在很多情况下,我们发现这是一个错误 使人困惑的常见原因 顾客

如果你想投影到 像这样的匿名类型,你想要 为了获得汽车财产,有 其实这是一个很简单的方法。仅仅 将汽车财产包括在 投影,像这样:

var result = 
    from person in context.People
    select new { person, person.Cars, person.Houses.Count, bar,
富等}

我们目前正在考虑一些建议 对的查询span API的改进 可能解决以下问题的未来版本 像这样的问题,所以你的反馈是 非常感谢。但既然我们不是 规划当前项目的改进 释放,我们保持未来 改善我们的内部积压工作, 我将着手解决当前问题 工作项

谢谢,Diego Vega实体框架 团队

你好,菲利佩

当Include应用于查询时,它 注入额外的“查询范围” 然后将信息发送到查询 稍后在执行查询时使用 实际执行。查询范围 信息被用于内部控制 重写查询,使实体 可以通过 指定的导航属性为 还从数据库和 实现了

当应用其他查询运算符时 在包含之后,我们会尽力保留这一点 查询范围信息。但是, 中指定的查询范围信息 Include不会在查询上流动 用于更改结果类型的运算符 查询的最后一步

例如,在这样的查询中: var结果= 来自上下文中的person.People.Include(“汽车”) 选择新{person,person.Houses.Count,bar,foo等}

由于以下原因,结果类型正在更改 投影操作(选择)位于 类型的结束和最终结果 查询不再是原始查询 包含的实体类型 已应用,因此查询范围为信息 他迷路了。共同建议 避免这是要始终应用包括 最后:

var result = 
    from person in context.People
    select new { person, person.Houses.Count, bar, foo, etc };
var resultWithCars =
    result.Include("Cars");
然而,在这种情况下,结果是 该Include将抛出一个异常 在运行时(与失败相反 (静默)因为查询范围无法 真的适用于匿名者吗 类型

上面描述的所有行为都是由 设计,但因为这是不可能的 用于包含在中引发异常 在很多情况下,我们发现这是一个错误 使人困惑的常见原因 顾客

如果你想投影到 像这样的匿名类型,你想要 为了获得汽车财产,有 其实这是一个很简单的方法。仅仅 将汽车财产包括在 投影,像这样:

var result = 
    from person in context.People
    select new { person, person.Cars, person.Houses.Count, bar,
富等}

我们目前正在考虑一些建议 对的查询span API的改进 可能解决以下问题的未来版本 像这样的问题,所以你的反馈是 非常感谢。但既然我们不是 规划当前项目的改进 释放,我们保持未来 改善我们的内部积压工作, 我将着手解决当前问题 工作项

谢谢,Diego Vega实体框架 团队


不要工作太多。是不是所有的案例都不包含汽车。也不起作用。是不是所有的案例都不包含汽车。也不起作用。汽车会带来一张单子,但是人。汽车会返回,所以有些不对劲。你能展示更多的代码吗?类和映射?一个想法是:测试查询的
MergeOption
。它应该是
AppendOnly
<代码>不跟踪
肯定会导致你看到的行为。不要太工作。汽车会带来一张单子,但是人。汽车会返回,所以有些不对劲。你能展示更多的代码吗?类和映射?一个想法:测试查询的
MergeOption