在数据库级别处理一对一的关系时,我们(我?)经常最终实现实际上是一对多的关系。
例如:
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}}很多关系。
当从这样的数据库设置生成实体数据模型时,这反映在主实体将包含对子实体的引用这一事实,但子实体将具有主实体集合。
由于我逻辑上将这种关系视为一对一,我从不指望孩子的主集合包含多个元素;因此,我希望子实体具有单个主引用而不是集合。
完成此操作的正确方法是什么?在数据库级别创建双向外键约束?调整生成的模型?
答案 0 :(得分:0)
调整模型。添加一个返回单个实例的单一引用属性,然后忽略collection属性。然后在映射配置中将EF设置为singular属性。
这不是我所说的优雅,但在将EF与预先存在的数据库一起使用时,通常必须做出这样的牺牲。