【问题标题】:EF5: Unused and unknown column causes problemsEF5:未使用和未知的列导致问题
【发布时间】:2013-02-24 10:30:13
【问题描述】:

好的,所以我有 2 个实体:课程和行业

行业实体只是一个参考表,其中列出了可以标记到课程的所有可用行业,以便对其进行分类。我输入了多对零或一对一的关系(一个课程可以选择是否有一个行业,而一个行业可以用许多课程标记)。

我知道我过去曾使用过一些图表,添加和删除关联。

现在是奇怪的部分:Course 的列映射有 2 个相似的列,IndustryId 和 Industry_Id

我怀疑它来自过去的关联,但我认为 EF 会解决这个问题。

问题出在这里:

在创建课程的我看来,IndustryId 是需要填充的属性。当我创建新课程时,我看到数据库中的 IndustryId 已填充。

但是,当我通过 Course (Course.Industry.Description) 访问 Industry 的属性时,没有填充任何内容。它似乎无法获取 Industry 实体。

我看到数据库中填充了 IndustryId,因此我尝试填充 Industry_Id 列。这解决了它。

很奇怪,模型中声明的属性是 IndustryId,因此该列被填充到数据库中。但是当我尝试通过 Course 获取行业实体时,它需要 Industry_Id,我不太清楚它来自哪里。

有人有什么想法吗?

【问题讨论】:

  • 通过使您的导航属性虚拟化来利用延迟加载,或者使用流畅的 API,通过使用 .Include() 进行预加载

标签: asp.net-mvc-3 entity-framework visual-studio-2012 entity entity-framework-5


【解决方案1】:

听起来在您从数据库更新时,您将表上的列名从Industry_Id 更改为IndustryId。下次您从数据库更新时,EF5(无法确定这是同一列,因为它与名称匹配)删除了 Industry_Id 的映射,并添加了一个名为 IndustryId 的新列。

但是,您已经在 EDMX 文件中基于 Industry_Id 列创建了外键映射 - 这就是为什么您在加载相关记录时遇到需要它的问题。

一般来说,在使用 Database-First 时,无论何时重命名数据库中的列,都需要更新 EF5 模型并更新/更正任何此类差异。

【讨论】:

    猜你喜欢
    • 2012-11-04
    • 2015-09-09
    • 2015-09-23
    • 2020-08-18
    • 2019-10-31
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多