我有一个名为 DocIdent 的模型,用于定义人员的身份文件。它具有到 DocIdentTypes 的外键和一个值。(例如:类型:“护照”,值“XXXXX”;类型:“社会保障号码”,值 YYYY 等)。
public class DocIdent {
public int Id { get; set; }
[ForeignKey("DocIdentType")]
public int DocIdentTypeId { get; set; } //FK
public string Value { get; set; }
//nav. props
public virtual DocIdentType DocIdentType { get; set; }
}
我在 OnModelCreating() 中定义了一个唯一约束(复合),就像这样:
modelBuilder.Entity<DocIdent>()
.HasIndex(entity => new { entity.DocIdentTypeId, entity.Value }).IsUnique();
这样它将只允许一个DocIdentType和Value的组合。
问题是:有一个DocIdentType“未记录”(假设其ID为5)。显然,对于此DocIdentType,值将始终为null。(或者,为了避免使字段可空,让我们说在这些情况下值将始终为“不适用”)。
因此,我需要修改约束条件,以便仅当DocIdentType Id为5时,它必须允许具有重复值。
我希望这个解释有意义...
怎么做?(或者不可能吗?)