如何在插入大型数据集后首先以编程方式重建代码中的所有索引(C#和EntityFrameworkCore)创建的SQL Server表

问题描述 投票:0回答:1

我有一个代码,首先创建数据库表,然后使用c#脚本和Entity Framework Core 2.2.6截断并插入大约12000条记录。

我在数据库上有5个索引,我需要在数据库工作后重新创建。我当然可以在每次运行脚本后手动执行此操作,但是作为一名程序员,这感觉很奇怪。

我试图找到一种使用EntityFrameworkCore做到这一点的方法,但是我似乎找不到它。

作为最后的选择,我当然可以执行SQL命令,但是我想知道是否有一些EntityFrameworkCore功能被我忽略了。

或者还有其他更有效的方法吗?

编辑:

每次收到第三方提供的新数据库以运行它时,我都会运行我的脚本,现在大约每个月都在开发中,以后会更少,因此可以手动选择,但是我过敏用于手动操作

c# sql-server entity-framework-core database-indexes
1个回答
0
投票

我最终使用了一个存储过程,该过程执行以下摘自here

DECLARE @TableName VARCHAR(255)
DECLARE @sql NVARCHAR(500)
DECLARE @fillfactor INT
SET @fillfactor = 80 
DECLARE TableCursor CURSOR FOR
SELECT QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))+'.' + QUOTENAME(name) AS TableName
FROM sys.tables
OPEN TableCursor
FETCH NEXT FROM TableCursor INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'ALTER INDEX ALL ON ' + @TableName + ' REBUILD WITH (FILLFACTOR = ' + CONVERT(VARCHAR(3),@fillfactor) + ')'
EXEC (@sql)
FETCH NEXT FROM TableCursor INTO @TableName
END
CLOSE TableCursor
DEALLOCATE TableCursor
GO
© www.soinside.com 2019 - 2024. All rights reserved.