Проблема не в свойстве shadow, а в свободной конфигурации:
e.HasOne<PostGroupDataModel>()
.WithMany()
Используя перегрузки без параметров, вы фактически указываете EF создать связь с без навигационных свойств на обоих концах, что и происходит. Однако у вас есть свойства навигации, поэтому EF Core создает другое отношение с обычным именем свойства / столбца FK. Просто потому, что имя по умолчанию GroupId
уже зарезервировано для ваших явных отношений, оно добавляет номер к нему, чтобы сделать его уникальным.
Решение состоит в том, чтобы всегда использовать перегрузки Has
/ With
, которые представляют наличие / отсутствие свойства навигации. В вашем случае:
e.HasOne(x => x.Group)
.WithMany(x => x.Posts)
Вы можете оставить оставшуюся часть свободно конфигурируемой конфигурации, но, поскольку GroupId
является значением по умолчанию свойства / столбца FK, в этом случае, .HasForeignKey("GroupId")
можно пропустить. Кроме того, поскольку DeleteBehavior.Cascade
является значением по умолчанию для требуемых отношений, .OnDelete(DeleteBehavior.Cascade)
также может быть пропущено, и единственным оставшимся может быть .IsRequired()
. * Т.е. 1023 *
.HasForeignKey("GroupId") // optional
.OnDelete(DeleteBehavior.Cascade) // optional
.IsRequired();
Конечно, их явное указание не повредит.