我有一个这样的索引:
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