Уникальные столбцы с несколькими подсказками не работают должным образом с EF-Core Code-First в SQLite - PullRequest
0 голосов
/ 23 сентября 2019

Мне нужна помощь с EF Core в режиме первого кода с SQLite.

Я пытаюсь сделать 2 столбца уникальными, но один столбец может быть нулевым (вместо этого я мог бы сделать ноль).Проблема в том, что уникальность не работает должным образом, когда второй столбец имеет нулевое значение.

Я делаю уникальное, как это:

modelBuilder.Entity<My_Table>().HasIndex(t => new { t.A_Id, t.B_Id }).IsUnique(true);

Пример ввода:

(A и B ниже: A_Id и B_Id)

+-----------------------------------+
| A |  B   | should add | is adding |
+-----------------------------------+
| 1 | 1    | yes         | yes      |
| 1 | 2    | yes         | yes      |
| 2 | 1    | yes         | yes      |
| 2 | 2    | yes         | yes      |
|   |      |             |          |
| 1 | 1    | no          | no       | // (Perfect! It's duplicated)
|   |      |             |          |
| 1 | null | yes         | yes      |
| 2 | null | yes         | yes      |
|   |      |             |          |
| 1 | null | no          | yes      | // (Problem here!)
+-----------------------------------+

Возможно, проблема в OnModelCreating() выше, но здесь остальная часть моего кода:

public class My_Table
{
    [Key] public int Id { get; set; }

    [Required] public int? A_Id { get; set; }
    [ForeignKey("A_Id")] public virtual Class_A A { get; set; }

    public int? B_Id { get; set; }
    [ForeignKey("B_Id")] public virtual Class_B B { get; set; }
}

Что я могу сделать, чтобы решить эту проблему?Спасибо!

...