SQL Server - EF Core - пользовательское ограничение, где все флаги против идентификатора должны быть ложными, кроме одного - PullRequest
0 голосов
/ 08 ноября 2018

У меня сначала есть таблица, сгенерированная с помощью основного кода ef, и мне нужно назначить ограничение, в котором все флаги в записях с определенным идентификатором первичного ключа должны быть ложными, за исключением одного, который должен быть истинным, поэтому у него всегда будет один запись с установленным флагом true.

например, на рисунке ниже, я ожидаю, что только один элемент будет иметь значение isAccountHolder в true, и если в таблице только одна запись, то для свойства isAccountHolder должно быть установлено значение true.

Мне интересно, может ли это быть сделано с использованием подхода «сначала код». Я пробовал следующее, но это не похоже на работу.

    builder
        .HasIndex(p => new {p.AccountHolderCustomerId, p.IsAccountHolder})
        .HasFilter("[IsAccountHolder] = 1");

enter image description here

1 Ответ

0 голосов
/ 09 ноября 2018

Я нашел свой ответ здесь: Как я могу остановить создание EF Core отфильтрованного индекса для столбца, который может содержать пустые значения

        builder
            .HasIndex(p => new {p.AccountHolderCustomerId, p.IsAccountHolder})
            .IsUnique()
            .HasFilter("[IsAccountHolder] = 1");
...