gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 16:09:18 26 4
gpt4 key购买 nike

我正在使用一个 View 来返回一个复杂的搜索查询。当我使用 linq 查询 EF 时,它返回同一行 3 次(实际行数是正确的)。

使用 LinqPad,我对我的 ef 实体和实际数据库 View 运行了相同的 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)

数据库

ReadmitPatientList
.Where ( => .PatientLastName.StartsWith ("cooper"))
.OrderBy (rpl => rpl.PatientLastName)

我无法发布结果...但 EF 返回同一记录的三行。 DB 返回 3 行单独的记录。我的 sql 查询也是如此。

我需要更改我的 EF LINQ 以使其正常工作吗?


如果在 SQL 资源管理器中运行,EF Linq 查询生成的 sql 代码实际上会返回正确的结果。

最佳答案

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

关于linq-to-sql - LINQ to Entities 未返回预期结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6077403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com