Код первой таблицы с двумя внешними ключами, один должен быть нулевым, если другой имеет значение - PullRequest
0 голосов
/ 19 декабря 2018

Ну, я пытаюсь применить Проверочное ограничение к моему столу!Таким образом, у меня есть Представители стран, в каждой стране должен быть один Представитель либо Individual, либо Organization, НО НЕ ОБА;

Например, если Individual представляет страну, то OrganizationId должно быть null.

как я могу применить это контрольное ограничение, используя аннотации данных Code First, или если есть какой-либо другой способ.

вот мой код:

    class CountryRepresentative
{
    [Column(Order = 0), Key, ForeignKey("Incident")]
    public Guid CountryId { get; set; }

    [Column(Order = 1), ForeignKey("Organization")]
    public int OrganizationId { get; set; }

    [Column(Order = 2), ForeignKey("Individual")]
    public int IndividualId { get; set; }

    public virtual Organization Organization { get; set; }

    public virtual Individual Individual { get; set; }

    public virtual Incident Incident { get; set; }
}

Надеюсь, все понятно.Спасибо товарищи

1 Ответ

0 голосов
/ 19 декабря 2018

Я бы использовал Fluent API для определения ограничения вручную:

migrationBuilder.Sql("ADD CONSTRAINT CK_ONLY_ONE_VAL CHECK 
                    ((nullif(one,'') is null or nullif(other,'') is null) 
                    and not (nullif(one,'') is null and nullif(other,'') is null) );");

nullif() поможет с проверкой на пустые значения и преобразует в null ...

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