LINQ到实体未返回预期结果

| 我正在使用视图返回复杂的搜索查询。当我使用linq来查询EF时,它将返回同一行3次(实际的行数是正确的)。 使用LinqPad,我已经对我的ef实体和实际的数据库视图运行了相同的linq。
ReadmitPatientList
    .AsQueryable()
    .Where(\"PatientLastName.StartsWith(\\\"cooper\\\")\")
    .OrderBy (rpl => rpl.PatientLastName)
    .Dump();
这就是我同时使用的linq。 linqpad显示lambda如下: EF:
ReadmitPatientList.MergeAs (AppendOnly)
   .Where ( => .PatientLastName.StartsWith (\"cooper\"))
   .OrderBy (rpl => rpl.PatientLastName)
D B
ReadmitPatientList
   .Where ( => .PatientLastName.StartsWith (\"cooper\"))
   .OrderBy (rpl => rpl.PatientLastName)
我无法发布结果...但是EF返回同一记录的三行。 DB返回3行的单个记录。就像我的sql查询一样。 我需要对其EF LINQ进行更改以使其正常工作吗? 如果在SQL资源管理器中运行,EF Linq查询生成的sql代码实际上将返回正确的结果。     
已邀请:
如果“患者”实体没有主键,或者推断为主键的列在结果集中的多个记录中相同,则会发生这种情况。 EF使用内部身份映射,这要求每个唯一标识的记录都必须重用实体的同一实例。因此,如果您从数据库中返回三个具有EF唯一标识的记录,则将返回三个相同实例的枚举,这些实例代表结果集中的第一条记录(有关身份映射的更多信息,请参见此处)。 Linq-to-sql \的DataContext中具有相同的行为。     

要回复问题请先登录注册