Здесь
.HasForeignKey(e => e.SalesOrderNo)
вы говорите EF Core использовать одно свойство (столбец) SalesFooter.SalesOrderNo
в качестве FK для SalesHeader
.Но SalesHeader
использует составной PK {SalesOrderNo, SalesType, SalesYear, BranchCode}
.
Тип FK * и эталонный PK должны совпадать.Это означает, что вам нужно настроить составной FK {SalesOrderNo, SalesType, SalesYear, BranchCode}
.
. Вы можете сделать это, просто удалив весь
modelBuilder.Entity<SalesFooter>()
.HasOne(e => e.SaleHeaders)
.WithMany(e => e.SalesFooters)
.HasForeignKey(e => e.SalesOrderNo);
или только
.HasForeignKey(e => e.SalesOrderNo)
свободноконфигурация, потому что ваша модель / отношения следуют соглашениям EF Core, поэтому EF Core может автоматически идентифицировать отношения с правильными задействованными свойствами навигации / FK / PK.
Но если вы хотите быть явным, используйте тот же синтаксискак для определения составного ПК:
modelBuilder.Entity<SalesFooter>()
.HasOne(e => e.SaleHeaders)
.WithMany(e => e.SalesFooters)
.HasForeignKey(e => new { e.SalesOrderNo, e.SalesType, e.SalesYear, e.BranchCode }); // <--