C# 当包含带有空子对象的孙子对象时,可空对象必须具有值
我们目前在Entity Framework中遇到了一个问题,我们从数据库中获取了一些东西,这些东西的子元素可以为null,并且还试图包含孙子元素 范例C# 当包含带有空子对象的孙子对象时,可空对象必须具有值,c#,entity-framework-6,C#,Entity Framework 6,我们目前在Entity Framework中遇到了一个问题,我们从数据库中获取了一些东西,这些东西的子元素可以为null,并且还试图包含孙子元素 范例 var workItems = _context.WorkItems .Include(x => x.Contract) .Include(x => x.Contract.ContractAccount) 若合同为空(这是允许的),那个么当它试图包含ContractAccount时,由
var workItems = _context.WorkItems
.Include(x => x.Contract)
.Include(x => x.Contract.ContractAccount)
若合同为空(这是允许的),那个么当它试图包含ContractAccount时,由于合同为空而失败
到目前为止,我们已经尝试对孙辈中的孩子进行空检查
i、 e
我们还尝试使用
DefaultIfEmpty(new Contract())
这似乎也是不允许的
我们需要返回完整的工作项及其contract/contractaccount,如果它有一个返回给用户,但是如果没有合同,那么它应该只返回工作项
感谢您的帮助。代替
合同??空:合同账户
试着
Contract.HasValue ? Contract.Value: defaultValue
根据C#Nullable
文档,如果未将T类型的值分配给Nullable对象,则可以将其与null进行比较并检索其HasValue属性,但无法访问其value属性或调用其其他成员
使用
然后包括:
var workItems = _context.WorkItems
.Include(x => x.Contract)
.ThenInclude(contract => contract.ContractAccount);
您好,这似乎不适用于。包括。Include(c=>c.Contract.HasValue)给出了一个错误,即HasValue不是一种契约方法。您好,我们使用的是EF6而不是EF Core,所以Include不可用。是的,现在一切正常。我很想知道是否有一个解决方案没有第三方图书馆,但接受你的答案,因为它已经解决了我们的问题。谢谢你的帮助!
var workItems = _context.WorkItems
.Include(x => x.Contract)
.ThenInclude(contract => contract.ContractAccount);