是否可以使用 FluentMigrator创建过滤索引?场景是我想在可能包含 NULL 的列上创建唯一索引,因此过滤器应该排除索引列的 NULL 行。
我在 SQL Server 2012 中修改了 FluentMigrator 生成的索引以使用这样的过滤器,并且可以确认它运行良好,所以剩下的难题是生成这个选项。
是否可以使用 FluentMigrator创建过滤索引?场景是我想在可能包含 NULL 的列上创建唯一索引,因此过滤器应该排除索引列的 NULL 行。
我在 SQL Server 2012 中修改了 FluentMigrator 生成的索引以使用这样的过滤器,并且可以确认它运行良好,所以剩下的难题是生成这个选项。
由于这是一个非常特定于 Sql Server 的功能,您不妨回退到 sql。
流畅风格的原因之一是它不是特定于数据库的,因此可以为不同的数据库类型运行相同的迁移。但是,如果您只打算使用 Sql Server 并想使用数据库特定的功能,那么 FluentMigrator 的优点在于它允许您执行 sql 语句。对于 FluentMigrator 中我们永远不会支持的高级内容以及存储过程中的更改,建议使用此方法。
它只是:
Execute.Sql(@"CREATE NONCLUSTERED INDEX FIBillOfMaterialsWithEndDate
ON Production.BillOfMaterials (ComponentID, StartDate)
WHERE EndDate IS NOT NULL;");
Postgres 也有部分索引,所以这可能是我们将来会添加到 FluentMigrator 的东西。