gpt4 book ai didi

.net - 如何在 Entity Framework 中实现真正的一对一关系?

转载 作者:行者123 更新时间:2023-12-04 00:47:25 25 4
gpt4 key购买 nike

我快到了。我得到的越近是 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)

当我在实体数据模型设计器中导入此架构时,Visual Studio 2010 建议 1 到 0..1 的关系。如果我强制执行 1..1,它会接受,但结果看起来不像 1..1 关系。

我对 1..1 关系有什么期望?

我希望它:

  • 在我创建 UserDetail 时自动创建一个 User,反之亦然(首选)
  • 当我尝试保存没有 UserDetail 的用户时抛出异常,反之亦然

我怎样才能做到这一点?

最佳答案

它甚至在数据库级别也不被支持,因为真正的 1 对 1 关系意味着您必须具有从 UserUserDetail 的 FK,同时从 UserDetailUser。 1 到 1 表示没有第二条记录就不能存在一条记录,但这使得在检查引用约束时无法将这些记录插入到表中。

一对一实际上总是 1 到 0..1,因为您必须能够在没有从属记录的情况下插入主体记录,并且一旦主体记录被持久化,您就可以插入从属记录。 EF 与关系数据库的工作方式密切相关。我知道纯 1 对 1 有效的唯一情况是 table splitting您将实体映射到同一个表的位置,因此两个实体必须始终存在并一起插入,因为它们形成单个记录。

如果您希望始终将UserUserDetail 保存在一起,您应该使用Entity splitting 将它们建模为单个实体。 .

关于.net - 如何在 Entity Framework 中实现真正的一对一关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6242985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com