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

use*_*480 5 sql linq entities

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

var ProjectRouteEmails = EmailManagerDAL.Context.ProjectRouteEmails
            .Where(p => p.ProjectID == ProjectID);
Run Code Online (Sandbox Code Playgroud)

这正确地从视图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;
Run Code Online (Sandbox Code Playgroud)

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

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

select * from ProjectRouteEmails (nolock) 
where ProjectID = 12
Run Code Online (Sandbox Code Playgroud)

并返回正确的三个唯一记录.

这里发生了什么?

谢谢!

Adu*_*cci 5

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

  • 仅供将来参考.打开edmx,然后右键单击该字段并添加实体键. (2认同)