Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.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# 使用企业库优化执行的插入查询_C#_Sql_Asp.net_Sql Server - Fatal编程技术网

C# 使用企业库优化执行的插入查询

C# 使用企业库优化执行的插入查询,c#,sql,asp.net,sql-server,C#,Sql,Asp.net,Sql Server,我已经编写了一个SQL SP来在MSSQL表中插入记录 CREATE PROCEDURE AddAmazonIT @BatchID INT, @ITName NVARCHAR(MAX) AS BEGIN INSERT INTO tbl_AmazonITMaster (Batch_Id,IT_Name) VALUES (@BatchID,@ITName) SELECT @@IDENTITY END 我有大约15000条记录要插入数据库, 我正在使用ent

我已经编写了一个SQL SP来在MSSQL表中插入记录

CREATE PROCEDURE AddAmazonIT
@BatchID INT,
@ITName NVARCHAR(MAX)
AS
BEGIN
    INSERT INTO tbl_AmazonITMaster
    (Batch_Id,IT_Name)
    VALUES
    (@BatchID,@ITName)

    SELECT @@IDENTITY
END
我有大约15000条记录要插入数据库,
我正在使用enterprise library ExecuteScalar方法调用SP…
插入数据时需要花费大量的时间

C#对象管理器类如下所示:

public class BaseRepository
{
    private string _key = "SqlDatabase"; 
    public SqlDatabase Db
    {
        get {
            if (ContextRepository.GetData(_key) == null)
            {
                ContextRepository.SetData(_key, DatabaseFactory.CreateDatabase());
            }
            return (SqlDatabase)ContextRepository.GetData(_key);
        }
    }

    public SqlConnection Con
    {
        get {
            return new SqlConnection(ConfigurationManager.ConnectionStrings["PTMap"].ConnectionString);
        }
    }
}

public class AmazonITRepository:BaseRepository
{
    public int Add(AmazonIT it)
    {
        return Convert.ToInt32(Db.ExecuteScalar("AddAmazonIT", it.Batch_Id, it.IT_Name));
    }
}

您知道如何对此进行优化吗?

您无法真正“优化”插入单个记录的特定代码位和SP,调用它15000次可能总是相当慢的。插入15000条记录可能有更有效的方法,但它们不会使用您粘贴的代码。您应该看看使用SQLBulkCopy插入这一数量的行。看见