【问题标题】:LINQ to ENTITIES DISTINCT return duplicates when LINQ TO SQL works as expected当 LINQ TO SQL 按预期工作时,LINQ to ENTITIES DISTINCT 返回重复项
【发布时间】:2009-12-18 21:19:45
【问题描述】:

去年我一直在使用 LINQ to SQL,没有遇到任何问题。我决定在一个项目中试验 EntityFramework,该项目的要求是从客户数据库中的几个视图中返回一些原始数据。我创建了实体模型,包括视图,但是当我编写查询以返回特定值的不同行时,返回了重复项。

EntityKey 设置为 true 的唯一列是 PWSID,但该列包含大量重复项。以下是我的查询:

int[] pwsIds = (from attribs in db.VW_DOR_ParcelAttribs_All
                select attribs.PWSID).Distinct().ToArray();

我创建了一个 LINQ to SQL 数据模型并使用了相同的查询,一切都按预期工作。我没有对任何一个数据模型进行任何更改。

我确实尝试将 EntityKey 属性的值设置为 false,但随后出现编译器错误。我无法控制客户的桌子。真的没有唯一的钥匙。

对于这个应用程序,LINQ to SQL 是可以接受的并且工作得很好,但是当我将来需要使用实体框架时,我试图更好地理解我做错了什么。任何见解都值得赞赏。

【问题讨论】:

    标签: linq-to-entities


    【解决方案1】:

    EntityKey 应该设置在保证在该表中唯一的属性或属性组合上。我猜 EF 正在优化 .Distinct(),因为它假定项目不能包含重复项。

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-27
      • 1970-01-01
      相关资源
      最近更新 更多