创建未过滤的多列唯一索引

时间:2018-01-10 11:08:04

标签: entity-framework ef-core-2.0

如果我有这样的定义:

...  
[Required]public string Name {get; set;}  
public Guid? DeletionMarker {get;set;}  
...  

我创建了一个这样的独特索引:

...  
....HasIndex(r => new { r.Name, r.DeletionMarker }).IsUnique();  
...

我在迁移中获取此代码:

migrationBuilder.CreateIndex(
                name: "whatever",
                table: "whatever",
                columns: new[] { "Name", "DeletionMarker" },
                unique: true,
                filter: "[DeletionMarker] IS NOT NULL");

但在我的情况下,我希望不应用过滤器(我不希望两次插入相同的名称,当然,当两行中的DeletionMarker为NULL时)。
我知道我可以进去并手动更改生成的迁移,但我希望有一个更清洁的'方式,如果可能的话...... (我使用SQL Server,只是为了给出上下文)

1 个答案:

答案 0 :(得分:0)

只是为了帮助谁落在这里:
我不知道,我刚刚发现,我可以用这个进一步的电话来塑造'塑造'索引,以便它(在我的情况下和需要):

...  
....HasIndex(r => new { r.Name, r.DeletionMarker }).IsUnique().HasFilter(null);  
...

并且不再生成过滤器。有趣的是,传递一个空字符串(HasFilter(""))在生成迁移过程中出错。
所以问题解决了! :-)