Entity Framework Core несколько фильтров индекса не работает - PullRequest
0 голосов
/ 27 июня 2019

Вот моя модель

public class Record
{
    public int Id { get; set; }
    public int Operator { get; set; }
    public bool IsActive { get; set; }
    public bool IsSessionActive { get; set; }
}

В основном я создал этот индекс

      modelBuilder.Entity<Record>().HasIndex(r => r.Operator )
            .HasName("Record_Filtered_Index")
            .HasFilter("([IsActive]=(1)) OR ([IsSessionActive]=(1))")
            .IsUnique();

Это должно ограничить меня от вставки записи для того же оператора, в то время как любое из логических значений истинно.

я пытался создать индивидуально

modelBuilder.Entity<Record>().HasIndex(r => r.Operator )
            .HasName("Record_Filtered_Index")
            .HasFilter("([IsActive]=(1)")
            .IsUnique();

modelBuilder.Entity<Record>().HasIndex(r => r.Operator )
            .HasName("SessionActive_Filtered_Index")
            .HasFilter("([IsSessionActive]=(1)")
            .IsUnique();

но конечный результат состоял в том, что 1-й фильтр в основном ничего не делает, а 2-й работает как задумано, поэтому он в основном перезаписал его.

Итак, мой вопрос ... Как я могу убедиться, что может быть только одна запись с активным логическим значением для каждого оператора?

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