实体框架中的结果与LINQ到SQL不同
我首先在项目中使用LINQ to SQL,并使用了以下语句:实体框架中的结果与LINQ到SQL不同,sql,linq,entities,Sql,Linq,Entities,我首先在项目中使用LINQ to SQL,并使用了以下语句: var ProjectRouteEmails = EmailManagerDAL.Context.ProjectRouteEmails .Where(p => p.ProjectID == ProjectID); 它正确地从view ProjectRouteEmails返回了三封不同的电子邮件。从电子邮件表返回的ID分别为117、591和610 我改为LINQtoEntities,并使用相同的视图和相同
var ProjectRouteEmails = EmailManagerDAL.Context.ProjectRouteEmails
.Where(p => p.ProjectID == ProjectID);
它正确地从view ProjectRouteEmails返回了三封不同的电子邮件。从电子邮件表返回的ID分别为117、591和610
我改为LINQtoEntities,并使用相同的视图和相同的LINQ语句,但尽管我返回了三条记录,但返回三次的却是第一条记录ID117
我试着这样写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
并返回正确的三条唯一记录
这是怎么回事
谢谢 确保实体数据模型中的ProjectRouteEmail的实体键设置正确。有时,当您将视图导入模型时,实体键会出错。我会仔细检查您是如何迭代此项以输出的。。。听起来我只是把它绑定到一个网格上。另外,我有一个断点集,在观察窗口中检查它会显示相同的结果。有趣的是…你能提供详细信息吗?它在实体对象中吗?或者…一些关系元数据?有些人可能会使用这些工具来创建实体数据模型,而不必深入细节。就是这样!!!!谢谢你,阿杜奇!它似乎任意选择了一个文本字段作为实体键。我把它改为正确的字段,它就可以工作了。非常感谢。仅供他人日后参考。打开edmx,然后右键单击该字段并添加实体键。