Почему существует поле UserProgramRefProgramCharacteristics.RefProgramCharacteristicsId?
Поскольку вы указываете EF Core создать здесь это поле:
public int RefProgramCharacteristicsId { get; set; }
// ^
Пока свойство навигацииназывается RefProgramCharacteristic
(нет s
).И по соглашениям EF Core :
Если зависимый объект содержит свойство с именем , или , тогда он будет настроен как внешний ключ.
RefProgramCharacteristicsId
не соответствует ни одному из этих правил, поэтому EF Core создает теневое свойство FK с именем по умолчанию RefProgramCharacteristicId
.
Либо переименуйте свойство в RefProgramCharacteristicId
(лучше), либо отобразите его явно, используя ForeignKey
аннотацию данных:
[ForeignKey(nameof(RefProgramCharacteristicsId))]
public RefProgramCharacteristic RefProgramCharacteristic { get; set; }
или
[ForeignKey(nameof(RefProgramCharacteristic))]
public int RefProgramCharacteristicsId { get; set; }
или используя HasForeignKey
свободный API:
builder.Entity<UserProgramRefProgramCharacteristic>()
.HasOne(e => e.RefProgramCharacteristic)
.WithMany(e => e.UserProgramRefProgramCharacteristics)
.HasForeignKey(e => e.RefProgramCharacteristicsId);