【发布时间】:2016-09-16 11:38:09
【问题描述】:
猜猜,我在急切加载嵌套图时缺少向 EF 通知导航属性。请让我知道我错过了什么?。
我的简化对象图
Product (ProductId, IEnumerable<Task>, ProductStatusId, ProductStatus)
ProductStatus (ProductStatusId, Description)
Task (TaskId, ProductId, TaskStatusId, TaskStatus)
TaskStatus (TaskStatusId, Description)
尝试加载 Product => 及其 Tasks => 及其 TaskStatus
.Include(p => p.ProductStatus)
.Include(p => p.Tasks)
.Include(p => p.Tasks.Select(t => t.TaskStatus))
得到以下错误:
{"无效的列名 'TaskStatus_ProductStatusId'。\r\n无效的列 名称'ProductStatusId'}
【问题讨论】:
-
听起来像是关系设置问题。请发布包含导航属性/键属性和数据注释/流畅设置的简化类。
-
你是对的 Ivan Stoev,流畅的配置名称错误。 (我们写了数百个配置,这个列名映射搞砸了)。
-
您确定您的数据库是最新的并与您的对象模型保持一致吗?
-
是的,布比,他们很好。你的分析是正确的。在我们的项目中,它既不是代码优先也不是数据库优先,我们分别做模型和数据库,并通过 fluent 映射它们。这就是引入问题的地方,因为我们在那里对列名进行硬编码。
标签: entity-framework eager-loading object-graph