实体框架中的结果与LINQ to SQL不同

时间:2011-05-10 13:15:48

标签: sql linq entities

我首先在项目中使用LINQ to SQL并使用以下语句:

var ProjectRouteEmails = EmailManagerDAL.Context.ProjectRouteEmails
            .Where(p => p.ProjectID == ProjectID);

从ProjectRouteEmails视图中正确返回了三封不同的电子邮件。从电子邮件表返回的ID为117,591和610。

我更改为LINQ to Entities并使用相同的视图和相同的LINQ语句,但即使我收回了三条记录,它也是第一条记录,即ID 117,它将被返回三次。

我尝试写这样的LINQ语句:

var ProjectRouteEmails = from p in EmailManagerDAL.Context.ProjectRouteEmails
                                 where p.ProjectID == ProjectID
                                 select p;

但没有区别;同样的记录三次返回。

我进入SQL Server Management Studio并运行查询:

select * from ProjectRouteEmails (nolock) 
where ProjectID = 12

并返回正确的三条唯一记录。

这里发生了什么?

谢谢!

1 个答案:

答案 0 :(得分:5)

确保为实体数据模型中的ProjectRouteEmails正确设置实体密钥。将视图导入模型时,有时实体键会搞乱。