如何使用 EF 代码优先方法创建条件唯一约束?

How to create conditional unique constraint using EF code first approach?

我需要在允许空值的列上添加唯一约束,这可以使用以下查询来实现:

CREATE UNIQUE NONCLUSTERED INDEX idx_yourcolumn_notnull
ON YourTable(yourcolumn)
WHERE yourcolumn IS NOT NULL;

如何使用 Entity Framework 代码优先方法实现它?

您可以使用迁移来添加索引:

public partial class CreateDatabase : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql("CREATE UNIQUE NONCLUSTERED INDEX ourcolumn_notnull
ON YourTable(yourcolumn)
WHERE yourcolumn IS NOT NULL;");
    }
}