Требования:
- У меня есть таблица с составным ключом [Key1, Key2]
- Мне нужны уникальные ключи Key1 и Key2, поэтому:
- если [A, B] уже в таблице
- [A, C] или [C, B] не может быть в таблице
- Я использую EF Core 3.1.5
- Я могу использовать любую базу данных позже
Как реализовать это ограничение в EF Core?
Я уже сделал это:
modelBuilder.Entity<myobject>(entity =>
{
entity.HasKey(a => new { a.Key1, a.Key2 });
entity.HasIndex(a => a.Key1).IsUnique();
entity.HasIndex(a => a.Key2 ).IsUnique();
});
Но эти коды по-прежнему работают без ошибок:
var table = DbContext.Set<myobject>();
table.Add(new myobject{ Key1 = "A", Key2 = "B" });
table.Add(new myobject{ Key1 = "A", Key2 = "C" });
table.Add(new myobject{ Key1 = "C", Key2 = "B" });
DbContext.SaveChanges();
Похоже, они игнорируют уникальное ограничение.