所以我在实体框架代码中首先有一个每层次的表继承模型,我想在其中一个派生属性上设置一个唯一的索引约束。目前它看起来像这样:
public abstract class BaseObj { ...shared props }
public class DerivedObj : BaseObj { ...more props }
public class AnotherObj : BaseObj {
[Index(IsUnique = true)]
public int Prop { get; set; }
}
如果我尝试插入任何DerivedObj
,则由于索引与前一个空条目匹配,它在第一个之后的所有内容都会失败。
我知道这可以在带有过滤索引的SQL中(或者只是允许重复的空值,或者通过检查EF鉴别器列),但是如何在未经过人工干预的情况下进行设置,以便将来进行数据库迁移?
相关:Creating a UNIQUE Filtered Index for NULL values on Entity Framework
如果有人能指出我正确的方向,我也不会害怕使用EF的内部或使用不支持的方法来实现这一点