3

我正在尝试使用实体框架创建一个具有 NULL 值的唯一过滤索引的表(例如,允许 Null 值重复)。

我正在使用 Fluent API 并具有此实体属性:

modelBuilder.Entity<Client>().Property(c => c.Barcode)
            .HasMaxLength(20)
            .IsRequired()
            .HasColumnAnnotation(
                IndexAnnotation.AnnotationName,
                new IndexAnnotation(new IndexAttribute("IX_ClientBarcode") { IsUnique = true }));

我发现 SQL Server 2008 允许对具有过滤空值的唯一列进行此操作:

CREATE UNIQUE INDEX indexName ON tableName(columns) INCLUDE includeColumns WHERE columnName IS NOT NULL

这甚至可能吗?因为我使用的是 LocalDB。

4

1 回答 1

2

我认为目前这是不可能的:

http://gavindraper.com/2014/06/26/entity-framework-fluent-api-and-indexing/

我将使用 IDatabaseInitializer 在使用 dbContext.Database.ExecuteSqlCommand() 创建数据库之后添加索引。希望支持将在未来的版本中出现。

于 2015-01-08T11:53:43.293 回答