如果我有这样的定义:
...
[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,只是为了给出上下文)
答案 0 :(得分:0)
只是为了帮助谁落在这里:
我不知道,我刚刚发现,我可以用这个进一步的电话来塑造'塑造'索引,以便它(在我的情况下和需要):
...
....HasIndex(r => new { r.Name, r.DeletionMarker }).IsUnique().HasFilter(null);
...
并且不再生成过滤器。有趣的是,传递一个空字符串(HasFilter(""))在生成迁移过程中出错。
所以问题解决了! :-)