【发布时间】:2012-12-24 20:16:51
【问题描述】:
我正在尝试通过 split Person | 完成表格拆分模式PersonData 与 Entity Framework 5 建立 1:1 关系。我正在使用代码优先方法,因为出于某种原因,EF 5.0 不喜欢 1:1 关系作为模型优先,恕我直言,这很糟糕。
Person 和 PersonData 都在 SQL Server 中将它们的 ID 列设置为标识:
人物表:
|ID|
|Name|
|.....|
PersonData 表:
|ID|
|ID_Person|
|.....|
在SaveChanges() 命令 SQL 返回后,我无法在表中插入标识列的显式值。
然后我更改了我的PersonData 地图文件:
this.HasKey(t => t.ID).Property(p =>
p.ID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
又试了一次。现在我明白了
ReferentialConstraint中的依赖属性映射到 商店生成的列。列:“ID”。
我应该改变什么?
【问题讨论】:
-
EF 5.0 可以毫无问题地在模型优先中建立 1:1 关系
-
不,不是。多重性在关系“Blabalbala”中的角色“Blablalah”中无效。因为从属角色属性不是关键属性,所以从属角色的多重性的上限必须是*。
-
你通过类继承来做到这一点。在这种情况下,PersonData 将继承自 Person。这非常简单。
-
为什么 PersonData 会有一个标识列? ID_Person 肯定是外键和主键。
-
这是什么意思?当您拥有 ID_Person 形式的唯一标识符时,标识列有什么好处?
标签: c# ef-code-first entity-framework-5