【问题标题】:Mapping new columns in a huge table in Entity Framework在实体框架中映射一个巨大表中的新列
【发布时间】:2026-02-12 23:10:02
【问题描述】:

我的上游有一个非常大的表/视图(623 列),我需要从中读取源数据以用于我的应用程序,并且添加了两个我需要的新列(varchar(255) 和 bit)与最新版本。我们使用的是Entity Framework 6.0,首先使用数据库。

警告:荒谬的列数大部分是我无法控制的,但我们可以删除本地副本中不需要的一些列。这是从更上游的角度呈现的。

我尝试从数据库更新模型,但新列未添加为标量属性。我手动创建了标量属性(字符串和布尔值),由于没有映射到表,这显然导致了错误。但是,当我滚动表格时,我看不到列表中的列。我可以进入 SQL 并在查询中选择这些列,所以我知道它们存在。我创建的两个属性显示在 Mapping Details 的下拉列表中。

EF 提取的列数有上限吗?还是在首先使用 DB 时手动将标量属性映射到基础表中的列?

【问题讨论】:

  • 我假设数据库优先是指 EDMX 文件。仅供参考,EDMX 将在 7.0 版中消失。您可能需要开始考虑先学习代码。

标签: .net vb.net entity-framework entity-framework-6 large-data


【解决方案1】:

这至少是一种解决方法:我能够通过从 EDMX 文件中删除表然后再次添加来显示列。旧实体有 579 个映射列,新实体有 623 个。现在我只需要重做所有外键/导航属性,因为源缺少它们...

生成实体需要相当长的时间,所以我猜想为具有荒谬列数的表自动生成实体可能存在问题,正如 Sam 所说,EF 7.0 将没有实际意义(希望)。

【讨论】:

  • 我还怀疑缺少隐式 PK 是问题的一部分;另一个表必须刷新,我终于注意到在错误列表的“消息”部分中提到该表因此无法导入。