使用实体框架核心创建带有关系索引选项的INDEX



我有一个这样的索引:

CREATE NONCLUSTERED INDEX [CIX_MyIndex]
ON [dbo].[TableWithData]([ColumnToAddIndex])
WITH (STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF, ONLINE = ON) 
ON [PRIMARY]

通过这段代码,我可以创建索引,因为STATISTICS_NORECOMPUTE = OFF, DROP_EXISTING = OFF是默认值

entity.HasIndex(e => e.ColumnToAddIndex)
    .HasName("CIX_MyIndex")
    .IsCreatedOnline();

但是如果我想将这些值更改为ON,我找不到任何方法来做到这一点,是否有可能使用实体框架核心来配置索引,如Transact SQL,并使用此链接中记录的任何关系索引选项?

https://learn.microsoft.com/en-us/sql/t-sql/statements/create-index-transact-sql?view=sql-server-ver16

我尝试使用HasAnnotation方法,但我不知道如何配置所需的字符串。

entity.HasIndex(e => e.ColumnToAddIndex)
    .HasName("CIX_MyIndex")
.HasAnnoation("STATISTICS_NORECOMPUTE", true)
    .IsCreatedOnline();

看起来。hasfilter不起作用,在这种情况下,似乎不可能使用EF core来配置它,与TSQL中可用的选项相比,EF core提供了一组有限的选项来配置索引。

我认为唯一的选择是使用RawSQL

context.Database.ExecuteSqlCommand("CREATE NONCLUSTERED INDEX [CIX_MyIndex] ON [dbo].[TableWithData]([ColumnToAddIndex]) WITH (STATISTICS_NORECOMPUTE = ON, DROP_EXISTING = ON, ONLINE = ON) ON [PRIMARY]");

https://learn.microsoft.com/en-us/ef/core/modeling/indexes?tabs=data-annotations index-filter

最新更新