У вас конфликтующая конфигурация FK.
IsUnique(false)
здесь
modelBuilder.Entity<Content>()
.HasIndex(ct => ct.FileId)
.IsUnique(false);
modelBuilder.Entity<Content>()
.HasIndex(ct => ct.UseCaseId)
.IsUnique(false);
подразумевает, что FK не являются уникальными, но тогда WithOne()
здесь
modelBuilder.Entity<Content>()
.HasOne(cn => cn.File)
.WithOne()
.OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Content>()
.HasOne(cn => cn.UseCase)
.WithOne()
.OnDelete(DeleteBehavior.Cascade);
подразумевает, что они уникальны (единственное различие между отношениями FK «один-ко-многим» и «один-к-одному» в реляционных базах данных заключается в том, что более поздний FK поддерживается уникальным ограничением / индексом). И это имеет приоритет над неуникальным отображением индекса и вызывает проблему.
Поскольку вы хотите, чтобы они не были уникальными, вы должны изменить отношения, чтобы они были один-ко-многим (или многие-к-одному) в зависимости от того, на какую сторону вы смотрите), заменив в обоих местах WithOne()
на WithMany()
.
Как только вы это сделаете, вы можете удалить обе конфигурации HasIndex
, поскольку они будут автоматически созданы для вас EF Основные соглашения. На самом деле они были бы созданы с вашей беглой конфигурацией, но как уникальные. Возможно, это то, что вы пытались исправить с помощью этих HasIndex
утверждений, но это просто неправильное место, и вместо этого вы должны исправить причину.