我想在 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(使用前将#替换为@)