在具有.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中是否有替代方法或其他替代方法?
答案 0 :(得分:1)
这是3.0重大更改之一-Configuration API for owned type relationships has changed:
与所有者和拥有者之间的关系相关的配置现在应该在
WithOwner()
之后链接,类似于配置其他关系的方式。尽管所有权类型本身的配置仍将在OwnsOne()/OwnsMany()
之后链接。
即您需要使用WithOwner
重载之一才能访问诸如HasForeignKey
/ HasPrincipalKey
之类的关系配置方法,例如
a.WithOwner()
.HasForeignKey("ReferenceId");