Конфигурация конкретной модели поставщика EF (если true, то требуется) - PullRequest
0 голосов
/ 02 июля 2019

Как установить значение обязательным, только если флаг установлен в true?

Например:

Property(t => t.DataQualityReview)
.If(t.IsDataQualityReview == true)
.ThenIsRequired()

1 Ответ

0 голосов
/ 02 июля 2019

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

Вариант 1 (предпочтительно): Если вы можете изменить схему базы данных, вы можете создать отдельную сущность / таблицу, которая будет представлять DataQualityReview.

public class Foo
{
    // optional DataQualityReview
    public int? DataQualityReviewId { get; set; }
    public DataQualityReview DataQualityReview { get; set; }
}
public class DataQualityReview
{
    public int DataQualityReviewId { get; set; }

    // required properties of a review
    public string Comments { get; set; }
    public int Rating { get; set; }
}

Идея в том, что Foo может иметь или не иметь DataQualityReview. Если у него есть обзор, вы можете применить другие свойства (например, Comments, Rating и т. Д.), Которые должны быть обязательными.

Вариант 2 : Если вы не можете изменить базу данных. Вы можете применить это в самом классе.

public class Foo
{
    // notice `private set`
    public bool IsDataQualityReview { get; private set; }
    public string DataQualityReview { get; private set; }

    public void UpdateReview(string review)
    {
      DataQualityReview = review;
      IsDataQualityReview = review != null;
    }
}

Как показано, вы не можете изменить IsDataQualityReview и DataQualityReview за пределами Foo. Затем вы предоставляете метод UpdateReview, который изменяет оба эти свойства на основе обзора.

...