我们目前在Entity Framework中遇到了一个问题,我们正在从数据库中获取一个子元素可以为null的东西,并尝试包含孙子元素。
示例
var workItems = _context.WorkItems
.Include(x => x.Contract)
.Include(x => x.Contract.ContractAccount)
如果contract为null(允许),则当尝试包含ContractAccount时,由于Contract为null而失败。
到目前为止,我们已经尝试过对孙子内部的孩子进行空检查。
即
Contract ?? null : ContractAccount
我们也尝试使用
DefaultIfEmpty(new Contract())
似乎也不允许。
如果有完整的WorkItem及其合同/合约帐户,我们需要将其退还给用户,但是如果没有合同,则应只返回WorkItem。
任何帮助表示赞赏。
答案 0 :(得分:1)
使用ThenInclude
:
var workItems = _context.WorkItems
.Include(x => x.Contract)
.ThenInclude(contract => contract.ContractAccount);
答案 1 :(得分:0)
in place of Contract ?? null : ContractAccount
try like
Contract.HasValue ? Contract.Value: defaultValue
According to C# Nullable
Documentation If a value of type T has not been assigned to the Nullable object, you can compare it to null and retrieve its HasValue property, but you cannot access its Value property or call its other members.