当数据库中不存在外键约束时,独立关联不检索所有行

时间:2014-11-19 14:02:25

标签: c# entity-framework ef-database-first

我正在使用EF6.1 Database First / ObjectContext / POCOs。

我有一个名为Foo的表和另一个名为FooHistory的表。这就是我的模型的样子:

enter image description here

由于遗留原因,FooNo是Foo的主键,但不是FooHistory,并且数据库中存在外键约束 。但是,这是一个逻辑外键,因此我在Foo和FooHistory之间建立了1到多个独立关联。 Principal / Dependent属性为FooNo。

以下Linq-to-Entities查询:

        var qry = from f in context.Foo.Include("History")
                  where f.FooNo.Trim() == "SomeNo"
                  select f.History.Count();

返回值6,而发送到数据库的SQL返回10行(这就是我想要的)。

我设法通过在FooNo上的数据库中创建外键约束并更新模型来获取查询以给我完整的10行。此时,关联属性中的参照约束EF已更改为数据库约束的名称。多样性也发生了变化,从0到1变为多数。

但是,我想了解为什么第一种方法不起作用 - 为什么在两种情况下发送到数据库的查询都相同时结果会有所不同?究竟内部发生了什么?

0 个答案:

没有答案