У меня есть класс для отслеживания вложений в запись. Каждая запись может иметь несколько записей RecordAttachments, но существует требование, чтобы на каждую запись мог быть только один RecordAttachment, помеченный как IsPrimary
.
public class RecordAttachment
{
public int Id { get; set; }
public int RecordId { get; set; }
public string Details { get; set; }
public bool IsPrimary { get; set; }
public Record Record { get; set; }
}
Я не могу просто использовать .HasIndex(e => new { e.RecordId, e.IsPrimary }).IsUnique(true)
, поскольку в одной записи может быть несколько false
значений.
В основном мне нужно уникальное ограничение для RecordId
и IsPrimary == true
, хотя это не сработало:
entity.HasIndex(e => new { e.RecordId, IsPrimary = (e.IsPrimary == true) }).IsUnique(true)
Edit:
Глядя на такие ответы: Уникальное ограничение для битовых столбцов, допускающее только 1 True (1) значение кажется, что было бы возможно создать ограничение непосредственно с помощью SQL, но тогда оно не будет отражено в моей модели.