【发布时间】:2011-05-20 20:45:38
【问题描述】:
我正在使用视图返回复杂的搜索查询。当我使用 linq 查询 EF 时,它返回同一行 3 次(实际行数是正确的)。
使用 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)
数据库
ReadmitPatientList
.Where ( => .PatientLastName.StartsWith ("cooper"))
.OrderBy (rpl => rpl.PatientLastName)
我无法发布结果...但 EF 返回同一记录的三行。 DB 返回 3 行单独的记录。我的 sql 查询也是如此。
我需要更改我的 EF LINQ 以使其正常工作吗?
如果在 SQL 资源管理器中运行,EF Linq 查询生成的 sql 代码实际上会返回正确的结果。
【问题讨论】:
-
我不确定我是否理解。行数是否正确,如 3 或 1?你可以试试 .Where("it.PatientLastName LIKE 'cooper%'")。
-
行数应该是同一个人的 3 条唯一记录。 (即三个不同的访问) EF 查询返回相同的记录 3 次。直接数据库查询正确返回
-
@ours 我在 EF 上尝试了同样的结果,但它不适用于 Straight DB。
标签: linq-to-sql linq-to-entities linqpad