【发布时间】:2015-12-04 18:28:01
【问题描述】:
我正在尝试使用 EF7 (7.0.0-rc1-final)、vNext RC1 (rc1-final) 和 SQL Server 2014 执行左外连接请求
数据库:
宠物:身份证、姓名
用户:ID、姓名、#PetId
这个有效:
var queryWorks = from u in _context.Users
join p in _context.Pets on u.PetId equals p.Id into pp
from p in pp.DefaultIfEmpty()
select new {
UserName = u.Name,
Pet = p
};
但是这个不起作用(Message = "Sequence contains no elements"):
var queryFails = from u in _context.Users
join p in _context.Pets on u.PetId equals p.Id into pp
from p in pp.DefaultIfEmpty()
select new {
UserName = u.Name,
PetName = (p == null ? "NULL" : p.Name)
};
SQL Server Profile 2014 显示第二个请求未发送到 SQL Server。为什么?
【问题讨论】:
-
此问题最近已得到修复 - 问题是 EF 对使用 DefaultIfEmpty 的查询做出了一些不正确的假设,如果想在 DIE() 调用之上编写任何内容,EF 会抛出。此修复程序将在下一个版本或夜间版本中提供。