首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在插入大型数据集后以编程方式重新生成代码中的所有索引(C#和EntityFrameworkCore)创建的SQL Server表

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

Stack Overflow用户
提问于 2020-03-04 18:50:40
回答 1查看 1.2K关注 0票数 0

我有一个代码优先创建数据库表,我使用c#脚本和实体框架核心2.2.6截断并插入大约12000条记录。

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

我试着用EntityFrameworkCore找到这样做的方法,但我似乎找不到它。

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

或者有没有其他更有效的方法来做这件事?

编辑:

每次我从第三方收到一个新的数据库以创建我们自己的数据库时,我都会运行我的脚本,现在大约每个月都在开发中,以后会更少,所以手动是一种选择,但我对手动做事情有过敏反应

EN

Stack Overflow用户

发布于 2020-03-05 16:28:37

我最终使用了一个存储过程,它执行以下取自here的操作

代码语言:javascript
复制
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
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60524380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档