Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在插入大型数据集后,以编程方式在代码优先(C#和EntityFrameworkCore)创建的SQL Server表中重建所有索引_C#_Sql Server_Entity Framework Core_Database Indexes - Fatal编程技术网

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

如何在插入大型数据集后,以编程方式在代码优先(C#和EntityFrameworkCore)创建的SQL Server表中重建所有索引,c#,sql-server,entity-framework-core,database-indexes,C#,Sql Server,Entity Framework Core,Database Indexes,我有一个代码先创建数据库表,用c#脚本和实体框架Core2.2.6截断并插入大约12000条记录 我在表上有5个索引,我需要在完成数据库工作后重新创建这些索引。当然,每次运行脚本后,我都可以手动执行此操作,但作为一名程序员,这感觉很奇怪 我试图用EntityFrameworkCore找到一种方法来实现这一点,但似乎找不到 作为最后的手段,我当然可以执行SQL命令,但我想知道是否有我忽略的EntityFrameworkCore功能 还是有其他更有效的方法 编辑: 每次我从第三方收到一个新的DB来创

我有一个代码先创建数据库表,用c#脚本和实体框架Core2.2.6截断并插入大约12000条记录

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

我试图用EntityFrameworkCore找到一种方法来实现这一点,但似乎找不到

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

还是有其他更有效的方法

编辑:
每次我从第三方收到一个新的DB来创建我们自己的DB时,我都会运行我的脚本,现在大约每个月都在开发中,以后会更少,所以手动操作是一种选择,但我对手动操作有一种过敏感

我最终使用了一个存储过程,该存储过程执行下面从


是否每次应用程序运行时都需要插入数据?或者这是一次性的事情?EF核心是ORM。物理数据库维护(创建/迁移除外)超出其职责范围。很快,除了执行原始SQL之外,没有其他功能了。@DawoodAwan请参阅我的edit@IvanStoev我想可能是这样的,所以现在我正在研究存储过程,我可以用@jdweng-huh调用它?SQL Server数据库表中肯定有索引。您确定您也在谈论Microsoft SQL Server吗?
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