在实体框架中建立一对一的关系

时间:2015-03-16 16:05:04

标签: entity-framework database-design one-to-one

在数据库级别处理一对一的关系时,我们(我?)经常最终实现实际上是一对多的关系。

例如:

CREATE TABLE master (masterId INT PRIMARY KEY)

CREATE TABLE child (
    childId INT PRIMARY KEY,
    masterId INT,
    CONSTRAINT child_master_fk FOREIGN KEY (masterId) REFERENCES master (masterId))

虽然单个child只能引用一个master,但没有任何内容阻止多个child引用相同的master,从而导致一对一{{1}}很多关系。

当从这样的数据库设置生成实体数据模型时,这反映在主实体将包含对子实体的引用这一事实,但子实体将具有主实体集合。

由于我逻辑上将这种关系视为一对一,我从不指望孩子的主集合包含多个元素;因此,我希望子实体具有单个主引用而不是集合。

完成此操作的正确方法是什么?在数据库级别创建双向外键约束?调整生成的模型?

1 个答案:

答案 0 :(得分:0)

调整模型。添加一个返回单个实例的单一引用属性,然后忽略collection属性。然后在映射配置中将EF设置为singular属性。

这不是我所说的优雅,但在将EF与预先存在的数据库一起使用时,通常必须做出这样的牺牲。