我想对要用GUID填充的列具有唯一约束。但是,我的数据包含此列的空值。如何创建使用流畅的迁移器允许多个空值而不违反唯一约束的约束?
我找到了SqlServer here的解决方法。因此可以使用FluentMigrator的IfDatabase并对SqlServer执行原始SQL。但是我想找到一个不依赖系统的解决方案。
SQLServer解决方案:
IfDatabase("sqlserver").Execute.Sql("
CREATE UNIQUE NONCLUSTERED INDEX foo
ON dbo.bar(key)
WHERE key IS NOT NULL;
");
答案 0 :(得分:0)
此功能-过滤索引,部分索引等-高度特定于DBMS。例如,SQL Server和PostgreSQL具有不同的语法,而MySQL完全不支持。
这是由于存在一些不支持这种功能的DBMS,因此FluentMigrator无法在常规索引创建界面中提供这种功能。但是,它确实为您要为 SQLServer 做为SqlServer.SqlServerExtensions.UniqueNullsNotDistinct的事情提供了流畅的界面。