如何创建一个唯一的约束,该约束也允许流利的迁移器为null?

时间:2019-07-08 09:19:16

标签: c# unique-constraint fluent-migrator

我想对要用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;
");

1 个答案:

答案 0 :(得分:0)

此功能-过滤索引,部分索引等-高度特定于DBMS。例如,SQL Server和PostgreSQL具有不同的语法,而MySQL完全不支持。

这是由于存在一些不支持这种功能的DBMS,因此FluentMigrator无法在常规索引创建界面中提供这种功能。但是,它确实为您要为 SQLServer 做为SqlServer.SqlServerExtensions.UniqueNullsNotDistinct的事情提供了流畅的界面。