C# 访问Linq中的导航属性返回-“;由于对象的当前状态,操作无效;

C# 访问Linq中的导航属性返回-“;由于对象的当前状态,操作无效;,c#,.net,entity-framework,.net-core,entity-framework-core,C#,.net,Entity Framework,.net Core,Entity Framework Core,我不确定这是否是一个合法的bug,或者我没有看到明显的东西。我正在使用EF Core preview 8。这是我的代码: var customers = dbContext.Customers .Include(c => c.Addresses) .Include(c => c.Contacts) .Where(c => c.TenantId == tenant.Id); if

我不确定这是否是一个合法的bug,或者我没有看到明显的东西。我正在使用EF Core preview 8。这是我的代码:

var customers = dbContext.Customers

                .Include(c => c.Addresses)
                .Include(c => c.Contacts)
                .Where(c => c.TenantId == tenant.Id);

if (!customerSearchCriteria.AccountSurname.IsEmpty())
            {
                customers = customers.Where(c => c.Contacts.Any(a =>
                    a.Surname.RemoveWhitespace().NullSafeToLower()
                        .Contains(customerSearchCriteria.AccountSurname.RemoveWhitespace().NullSafeToLower())));
            }

return customers.Skip(customerSearchCriteria.start).Take(customerSearchCriteria.length).ToList();

如果我完全删除中间的条件,查询工作正常。只要我触摸Contacts或Addresses属性,它就会返回上述异常。有什么线索吗

我做了一些研究,在github上发现了一些关于类似问题的链接,但不确定这是否是同一个问题:


一旦您决定使用预览(beta版)软件,请确保使用最新的预览(此时为9版,甚至是每日版本),直到它们发布-许多东西在预览中不起作用,在以后的版本中会被修复/更新。但是请记住,自定义方法,如
RemoveWhitespace()
NullSafeTower())
不支持需要客户评估的-请参阅。因此,您必须找到可翻译的方法,或者显式地切换到LINQ to对象。这将破坏分页代码的性能。我建议改为使用
Trim
ToLower
——它们转换为SQL,并且自然地处理
NULL
s。