加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

linq-to-sql – LINQ to Entities未返回预期结果

发布时间:2021-01-12 17:34:22 所属栏目: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显示为:
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才能使其正常工作?

EF Linq查询生成的sql代码如果在SQL Explorer中运行,则实际返回正确的结果.

解决方法

如果Patient实体没有主键,或者推断为主键的列在结果集中的多个记录中相同,则会发生这种情况. EF使用内部身份映射,该映射要求每个唯一标识的记录必须重用相同的实体实例.因此,如果从数据库返回三个具有相同EF唯一标识的记录,则返回表示结果集中第一个记录的三个相同实例的枚举(更多关于身份映射也是 here). Linq-to-sql的DataContext中也有相同的行为.

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读