Как установить обязательно, только если флаг верен?
Например:
Property(t => t.DataQualityReview)
.If(t.IsDataQualityReview == true)
.ThenIsRequired()
Как установить обязательно, только если флаг верен?
Например:
Property(t => t.DataQualityReview)
.If(t.IsDataQualityReview == true)
.ThenIsRequired()
Я думаю, что база данных не сможет обеспечить такое ограничение. Есть несколько способов, которыми вы могли бы обеспечить выполнение требования по-другому.
Вариант 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
, который изменяет оба этих свойства на основе обзора.