linq-to-sql – LINQ to Entities未返回预期结果
发布时间:2021-01-12 18:34:13 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用视图返回复杂的搜索查询.当我使用 linq查询EF时,它返回同一行3次(实际的rowcount是正确的). 使用LinqPad我对我的ef实体和实际的数据库视图运行了相同的linq. ReadmitPatientList .AsQueryable() .Where("PatientLastName.StartsWith("cooper")")
我正在使用视图返回复杂的搜索查询.当我使用 linq查询EF时,它返回同一行3次(实际的rowcount是正确的). 使用LinqPad我对我的ef实体和实际的数据库视图运行了相同的linq. ReadmitPatientList .AsQueryable() .Where("PatientLastName.StartsWith("cooper")") .OrderBy (rpl => rpl.PatientLastName) .Dump(); 这就是我正在使用的linq. linqpad将lambda显示为: 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才能使其正常工作? EF Linq查询生成的sql代码如果在SQL Explorer中运行,则实际返回正确的结果. 解决方法如果Patient实体没有主键,或者推断为主键的列在结果集中的多个记录中相同,则会发生这种情况. EF使用内部身份映射,该映射要求每个唯一标识的记录必须重用相同的实体实例.因此,如果从数据库返回三个具有相同EF唯一标识的记录,则返回表示结果集中第一个记录的三个相同实例的枚举(更多关于身份映射也是 here). Linq-to-sql的DataContext中也有相同的行为.(编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读