左外连接与EF内存数据崩溃,但与SqlServer一起工作正常

时间:2018-01-09 23:47:21

标签: entity-framework

我在单元测试的几个地方碰到了这个问题。我使用左外连接写了这样的查询:

from user in db.SSUserInfo
from purchase in db.Purchases.Where(p => p.UserId == user.Id && p.PackageGroupId == Id).DefaultIfEmpty()
where userIdList.contains(user.
select new {
    purchaseId = (int?)purchase.Id
}

这在查询数据库时工作正常,即使如果用户不存在购买,购买也将为空。但是,当查询内存列表(用于单元测试)时,如果购买返回为null,则会因NULL引用异常而崩溃。

我可以通过执行以下操作让内存版本崩溃:

purchaseId = (int?)((purchase != null) ? purchase.Id : null)

但是这会导致发送到数据库的SQL膨胀。

有没有人知道如何让内存中的查询不会在null上崩溃,同时保持SQL的效率?

EF 6.2.0和.Net 4.6.1正在发生这种情况。它也发生在早期版本上。

0 个答案:

没有答案