我快到了。我越接近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)
当我在实体数据模型设计器中导入此schama时,Visual Studio 2010会建议1到0..1的关系。如果我强制执行1..1它接受,但结果看起来不像1..1关系。
我对1..1关系的期望是什么?
我希望它能够:
我该如何实现?
答案 0 :(得分:6)
即使在数据库级别也不支持它,因为真正的1对1关系意味着您必须具有从User
到UserDetail
的FK,同时FK从UserDetail
到{ {1}}。 1到1表示没有第二条记录就不能存在一条记录,但是当检查引用约束时,不可能将这些记录插入表中。
一对一实际上总是1到0..1,因为您必须能够插入主要记录而不依赖于主记录,并且一旦主记录被持久化,您就可以插入从属记录。 EF与关系数据库的工作方式密切相关。我知道纯粹的1对1工作的唯一情况是table splitting,其中您将实体映射到同一个表,因此两个实体必须始终存在并插入在一起,因为它们形成单个记录。
如果您希望始终将User
和User
保存在一起,则应使用Entity splitting将其建模为单个实体。