[英]How to do a true one-to-one relationship in Entity Framework?
我快到了。 我越接近是 1 到 0..1 的关系。
我的物理模式是:
User:
- Id : int primary Key identity
- Name : varchar(50)
UserDetail:
- Id : int primary Key | foreign key to User.Id
- DisplayName : varchar(200)
当我在实体数据 Model 设计器中导入此架构时,Visual Studio 2010 建议使用 1 到 0..1 的关系。 如果我强制执行 1..1 它接受但结果看起来不像 1..1 关系。
我对 1..1 关系有什么期望?
我希望它:
我怎样才能做到这一点?
即使在数据库级别也不支持它,因为真正的 1 对 1 关系意味着您必须具有从User
到UserDetail
的 FK 以及同时从UserDetail
到User
的 FK。 1 比 1 表示如果没有第二条记录,一条记录就不能存在,但是当检查引用约束时,无法将这些记录插入表中。
一对一实际上始终是 1 到 0..1,因为您必须能够在没有依赖记录的情况下插入主体记录,并且一旦主体记录被持久化,您就可以插入依赖记录。 EF 与关系数据库的工作方式密切相关。 我知道纯 1 对 1 工作的唯一情况是表拆分,您将 map 到同一个表的实体,因此两个实体必须始终存在并插入在一起,因为它们形成单个记录。
如果您想始终将User
和UserDetail
保存在一起,您应该 model 使用实体拆分将它们作为单个实体。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.