ef core3中HasForeignKey和ForSqlServerUseSequenceHiLo方法的替代方法是什么?

时间:2019-12-08 06:00:25

标签: c# entity-framework-core .net-core-3.0 ef-core-3.0

在具有.net核心2.2和ef核心2.2的项目中,我在dbContext中使用以下代码来设置引用实体与其之间的一对多关系,这在dbContext的 OnModelCreating 方法中是很困难的: / p>

 modelBuilder.Entity<Reference>().OwnsMany<WorkDown>("WorkDowns", a =>
        {
            a.HasForeignKey("ReferenceId");
            a.Property(ca => ca.Action).IsRequired();
            a.Property(ca => ca.Note);
            a.Property(ca => ca.WorkDownId).ForSqlServerUseSequenceHiLo("WorkDownSequence");
            a.HasKey("WorkDownId");
        });

它在.netcor 2.2项目中完美运行,但是在另一个使用.net core和ef core 3的项目中,我找不到 HasForeignKey ForSqlServerUseSequenceHiLo 的任何替代方法。 strong>扩展方法efcore 3中是否有替代方法或其他替代方法?

1 个答案:

答案 0 :(得分:1)

这是3.0重大更改之一-Configuration API for owned type relationships has changed

  

与所有者和拥有者之间的关系相关的配置现在应该在WithOwner()之后链接,类似于配置其他关系的方式。尽管所有权类型本身的配置仍将在OwnsOne()/OwnsMany()之后链接。

即您需要使用WithOwner重载之一才能访问诸如HasForeignKey / HasPrincipalKey之类的关系配置方法,例如

a.WithOwner()
    .HasForeignKey("ReferenceId");