我首先在项目中使用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
并返回正确的三条唯一记录。
这里发生了什么?
谢谢!
答案 0 :(得分:5)
确保为实体数据模型中的ProjectRouteEmails正确设置实体密钥。将视图导入模型时,有时实体键会搞乱。