Entity Framework Core 中的自引用/父子关系一对零或一对一

2024-01-11

我想在 Entity Framework Core 中创建一对零或一对一的引用/父子关系。我的意思是我的实体可以有一个父级:

public class MyEntity
{
    public Guid Id { get; set; }

    public Guid? ParentEntityId { get; set; }
    public MyEntity ParentEntity { get; set; }

    public MyEntity ChildEntity { get; set; }
}

我正在尝试通过 Fluent api 配置它:

entity.HasOne(x => x.ParentEntity)
    .WithOne(x => x.ChildEntity)
    .HasForeignKey( .... )

我不明白我必须在最后一行写什么。我也不确定我的实体是否正确。

有人可以帮我吗?

EDIT: 这个问题并不能解决我的问题:实体框架中的自引用/父子关系 https://stackoverflow.com/questions/9955491/self-referencing-parent-child-relationship-in-entity-framework我的问题是关于创建外键。此行不起作用:

.HasForeignKey(x => x.ParentEntityId)

HasForeignKey需要输入一个字符串。


在一对一关系中,您始终必须在HasForeignKey调用,即将包含外键的实体。对于两个不同类之间有意义的一对一关系,请参阅标准 EF 示例 https://learn.microsoft.com/en-us/ef/core/modeling/relationships?tabs=fluent-api%2Cfluent-api-simple-key%2Csimple-key#one-to-one。对于自我参考,很明显 EF 应该发现没有选择。不过,您必须指定类型:

modelBuilder.Entity<MyEntity>()
    .HasOne(x => x.ParentEntity)
    .WithOne(x => x.ChildEntity)
    .HasForeignKey<MyEntity>(c => c.ParentEntityId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Entity Framework Core 中的自引用/父子关系一对零或一对一 的相关文章

随机推荐

  • jquery 1.4.2 中的更改破坏了代码?

    我在使用 jquery 1 3 的页面上有此代码 但现在在 jquery 1 4 2 中 它因语法错误 无法识别的表达式而中断 document ready function span name charge click function
  • 如何判断SQL查询类型是DML还是DDL?

    如何判断SQL查询类型是DDL还是DML 数据定义语言 DDL 语句用于定义数据库结构或模式 一些例子 CREATE 在数据库中创建对象 ALTER 更改数据库的结构 DROP 从数据库中删除对象 TRUNCATE 从表中删除所有记录 包括
  • QT qmysql 驱动未加载

    我知道这个论坛上已经有很多关于这个问题的主题 但我没有设法解决我的问题 我的配置如下 QT 版本 5 14 2 mscv2017 64 编译器 mscv amd64 我的问题是我的应用程序没有加载 libmysql dll 这是我所做的 我
  • 仅具有底部边框的输入文本字段

    如何设置文本样式input字段使其只有一个border bottom像这个 预期文本Input Field Use outline 0然后设置border bottom input outline 0 border width 0 0 2p
  • Pandas 变换方法执行缓慢

    我有一个规范的熊猫transform性能似乎莫名其妙地缓慢的示例 我已阅读问答apply method https stackoverflow com questions 54432583 when should i ever want t
  • 从 Fragment 调用 DialogFragment

    我正在尝试从 Fragment 类中调用 DialogFragment 我有一个 ImageView 并且想在我设置的 ImageView 的 onClickListener 中调用我的 DialogFragment 类 我在 onClic
  • 如何使用CGAffineTransform MakeRotation?

    我想使用 Quartz 2D 绘制文本 菜单 方向错误 我希望 菜单 仍然可读并且与 X 轴成 45 度 下面是我的代码 CGContextSelectFont context Arial 12 kCGEncodingMacRoman CG
  • 如何将 YAML 文件解析/读取为 Python 对象?

    如何将 YAML 文件解析 读取为 Python 对象 例如 这个 YAML Person name XYZ 对于这个 Python 类 class Person yaml YAMLObject yaml tag Person def in
  • 如何让jquery移动控件组宽度为100%?

    我正在使用 jquery mobile 来做演示 我想让本地导航的宽度为 100 但我不知道该怎么做 代码在这里 ul class localnav li a href class ui btn active 111 a li li a h
  • 避免重复

    如何避免字符串中的重复项 在 C 中 例如 我有 a a b b c 我想得到像 a b c 这样的答案 通过使用HashSet
  • 为所有用户安装可选的桌面快捷方式

    我想做一个wix安装程序 带有optional所有用户的桌面快捷方式 可选的意思 我不能把它放在component主exe的 但在一个单独的component 这样我就可以设置一个单独的feature为快捷方式 当这样做时 wix 抱怨道
  • 避免注册表 php 中的 SQL 注入

    我的本地主机上有一个简单的注册表单 仍在测试 我想知道它是否会受到 SQL 注入攻击 Code name mysql real escape string POST name password mysql real escape strin
  • 如何在 Blazor 服务器应用程序中以编程方式注销(身份)

    在我的代码中 我处理 DbUpdateConcurrencyException 对于更新用户帐户的情况 并且用户不再存在 我想将他们注销 因为他们不再是有效用户 当然 这不是什么大问题 因为这种情况应该很少见 他们尝试访问的任何页面都不会接
  • 价值的存在量化

    我在 Scala 语言中遇到了对值的存在量化 规范 3 2 10 存在类型 x y Inner forSome val y Outer 有人有说明性的用例吗 T forSome val x S 定义为T forSome type t lt
  • docker 中的“/bin/sh: 1: [“apache2ctl”,: 未找到”

    我有一个简单的 Dockerfile FROM ubuntu RUN apt get update RUN apt get install y apache2 RUN apt get install y apache2 utils RUN
  • 你怎么解决? formattastic :label_method 不再可用

    好的 我是 ruby rails 新手 因此 为了弥补我的弱点 我的公司请了一个人来帮助我创建我们网站的骨架 他输入了 formattastic label method 这样我们就可以更改 DDLB 中显示的字段 当我将项目移动到新盒子时
  • IsMobileDevice 如何工作?

    MSDN http msdn microsoft com en us library fhhycabe aspx听起来很容易检测移动浏览器 if Request Browser IsMobileDevice true Response Re
  • VBA仅对文本进行排序,忽略带有公式的单元格

    我有一张非常大的工作表 约有 150 列 其中大部分包含公式 当我想对输入到不使用公式的单元格的数据进行排序时 它会弄乱整个工作表 输入单元格不在一起 目前 我在 VBA 中的解决方案是将单元格复制到另一个 隐藏 工作表 排序并将其全部放回
  • 正确的 C# 命名空间用法是什么?

    我有 Java 背景 我看到很多人说命名空间 包 但环顾一下可用的代码 在我看来 人们使用命名空间的方式并不像使用包那样 目前 我正在开发一个 DLL 来管理对要在两个 Windows 应用程序之间共享的数据库的所有数据访问 到目前为止 我
  • Entity Framework Core 中的自引用/父子关系一对零或一对一

    我想在 Entity Framework Core 中创建一对零或一对一的引用 父子关系 我的意思是我的实体可以有一个父级 public class MyEntity public Guid Id get set public Guid P