У меня есть приложение ASP.Net Core, которое использует Entity Framework Core ORM и две сущности в БД MS-SQL, которые имеют отношение один ко многим - Company и Trigger. Таким образом, компания может иметь несколько триггеров. Они отображаются так:
modelBuilder.Entity<OnsiteCampaignTrigger>()
.HasOne(x => x.Campaign)
.WithMany(x => x.Triggers)
.HasForeignKey(x => x.CampaignId)
.OnDelete(DeleteBehavior.Cascade);
Каждый триггер имеет тип, и я хочу иметь возможность создавать только один триггер каждого типа для одной компании. Поэтому я хочу сделать комбинацию столбцов Type и CompanyId уникальной для таблицы триггеров. Я решил использовать конфигурацию HasAlternateKey следующим образом:
modelBuilder.Entity<Trigger>()
.HasAlternateKey(x => new { x.CampaignId, x.Type });
Но в EF-миграции я получил это:
migrationBuilder.DropIndex(
name: "IX_Triggers_CampaignId",
table: "Triggers");
migrationBuilder.AddUniqueConstraint(
name: "AK_Triggers_CampaignId_Type",
table: "Triggers",
columns: new[] { "CampaignId", "Type" });
Похоже, он сбросил мой индекс по внешнему ключу CampaignId! Приведет ли это к снижению производительности?