【发布时间】:2013-03-18 19:42:45
【问题描述】:
我从我的 SQL Server 数据库创建了一个实体数据模型。尽管我的每个表中只有一个主键,但我的几乎所有属性都标记为实体键。我当然可以修改这些,但是谁能告诉我为什么会这样?
【问题讨论】:
-
我假设的 SQL Server?你确定你的表上有正确的主键吗?
标签: c# entity-framework edmx ado.net-entity-data-model
我从我的 SQL Server 数据库创建了一个实体数据模型。尽管我的每个表中只有一个主键,但我的几乎所有属性都标记为实体键。我当然可以修改这些,但是谁能告诉我为什么会这样?
【问题讨论】:
标签: c# entity-framework edmx ado.net-entity-data-model
很可能默认情况下,它已确定标记为键的列使条目唯一。它也会对导入的视图执行此操作。
也就是说,我已经导入了具有唯一约束和主键的表定义,但没有看到这种行为。
【讨论】:
使用 Xml 编辑器打开 edmx 文件(右键单击解决方案中的 Edmx 文件并选择“打开方式...”。完成后,您将在文件中看到 Xml cmets 解释为什么现有键列不能被使用。通常是因为该列属于 EF 不支持的类型(例如 HierarchyId),因此该列不受支持,因此被排除在外。这样您最终会得到一个没有键列和人工键的表将被创建,在这种情况下,由所有类型的列组成,这些列是键列的有效类型(例如,空间类型的列将从该列表中排除,因为它们不是有效的键列是 EF)
【讨论】: