asp.net-mvc – 实体框架:DBQ更新后LINQ Include()不起作用,为什么?

我是Entity Framework和LINQ的新手,并且遇到了一个相当奇怪的场景.

我一直在使用以下查询来返回帐户信息:

var account = ((from acct in _entities.Account
                        join m in _entities.Item on acct.Id equals m.Account.Id
                        where acct.Id == accountId && m.ItemNumber.EndsWith(itemNumber)
                        select acct) as ObjectQuery<Account>).Include("Item.ItemDetails");

我们最近对数据库进行了一些更改并生成了一个新的edmx文件.在更改之后,上面的查询仍然返回帐户和关联的项目,但不再包含ItemDetails.

我已经验证了查询返回的SQL,并且由于返回了正确的数据,似乎没有任何错误.

此外,我没有在Item和ItemDetails对象之间的edmx文件中看到不同的anthing,因为它们没有被更改,导航属性就在那里.

谁看过这个吗?

谢谢

最佳答案 在Include(…)中使用了导航属性的名称,因此最好从.edmx中检查属性的确切名称(特别是如果它是单数或复数).

您也可以尝试更改此查询:

var account = from acct in _entities.Account.Include("Item.ItemDetails")
              join m in _entities.Item 
                  on acct.Id equals m.Account.Id
              where acct.Id == accountId && m.ItemNumber.EndsWith(itemNumber)
              select acct;
点赞