实体框架查询未正确返回枚举结果

时间:2010-03-22 19:30:25

标签: sql-server linq entity-framework linq-to-entities ienumerable

我有一个非常奇怪的问题,我的实体框架查询没有正确枚举。

我正在使用的SQL Server表有一个带有Sku字段的表,该列是“distinct”。它不是密钥,但它不包含任何重复值。使用wheredistinctgroup by cluases的实际SQL,我已经证实了这一点。

然而,当我这样做时:

// Not good
foreach(var product in dc.Products)

// Not good
foreach(var product in dc.Products.ToList())

// Not good
foreach(var product in dc.Products.OrderBy(p => p.Sku))

返回的前两个对象是相同的!!!

第三项技术上是表中的第二项,但第四项又是表中的第一项!!!

我找到的唯一解决方案是使用Distinct扩展方法,在这种情况下不应该做任何事情:

// Good
foreach(var product in dc.Products.ToList().Distinct())

另一个奇怪的事情是结果查询的计数是相同的!!! 因此,无论结果可枚举是否具有正确的结果或重复,我总是得到行数在实际的表中! (不,我在任何地方都没有限制条款。)

什么可能导致这种情况!?!?!?

1 个答案:

答案 0 :(得分:1)

确保您拥有该表的主键。