2009-12-18 82 views
1

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

将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是可以接受的,并且效果很好,但我试图更好地理解我在将来需要使用实体框架时做了什么错误。任何见解都会被赞赏。

回答

3

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

+1

这听起来很合理。 – Rick 2009-12-18 21:56:55