Уникальность каждого ключа в составном ключе с использованием EF Core и Fluent API - PullRequest
0 голосов
/ 07 августа 2020

Требования:

  • У меня есть таблица с составным ключом [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();

Похоже, они игнорируют уникальное ограничение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...