EF6的1:0..1实体关系配置在EF Core 7中的等效实现方式
EF6 1:0..1关联迁移至EF Core 7的等效配置
你需要将EF6中1:0..1的实体关联关系迁移到EF Core 7,现有简化实体代码如下:
public class MyEntity { public Guid Id { get; set; } public virtual MyGroup MyEntityMyGroup{ get; set; } } public class MyGroup { public Guid Id { get; set; } public virtual MyEntity MyEntity{ get; set; } }
在EF6的DbContext.OnModelCreating中,你使用的配置为:
modelBuilder.Entity<MyEntity>() .HasRequired(myEntity => myEntity.MyEntityMyGroup) .WithOptional(group => group.MyEntity);
EF Core 7中的等效配置
EF Core已废弃HasRequired/WithOptional这类方法,改用HasOne/WithOne统一定义一对一关联,针对你的场景(MyGroup无空外键),等效写法如下:
modelBuilder.Entity<MyEntity>() .HasOne(myEntity => myEntity.MyEntityMyGroup) .WithOne(group => group.MyEntity) .IsRequired() .HasForeignKey<MyEntity>("MyEntityMyGroupId");
配置说明
HasOne+WithOne:定义两个实体间的一对一关联.IsRequired():确保MyEntity必须关联一个MyGroup,对应EF6的HasRequired.HasForeignKey<MyEntity>("MyEntityMyGroupId"):指定外键存储在MyEntity表中(以阴影属性形式存在,无需在实体类中显式定义),且该外键为非空(因IsRequired),满足你要求的MyGroup实体上不存在可空外键的条件。
内容的提问来源于stack exchange,提问作者Zserbinator
相关产品推荐
相关产品推荐

