【问题标题】:Bulk Insert a List of Custom Class Data into SQL through ADO.Net in C#在 C# 中通过 ADO.Net 将自定义类数据列表批量插入 SQL
【发布时间】:2012-01-18 17:01:48
【问题描述】:

我已将数据集批量插入 SQL。但我不确定如何将数据集合(列表)插入到 SQL 表中。我还需要为整个插入过程维护事务。

我试过如下图。

using (SqlConnection sqlConn = new SqlConnection(ConnectionString)
        {
            sqlConn.Open();
            using (SqlTransaction sqlTran = sqlConn.BeginTransaction())
            {
                try
                {
                    foreach (CustomClass item in ListOfData)
                    {
                        string query = "Build the Query Here";
                        SqlCommand sqlComm = new SqlCommand(query, sqlConn, sqlTran);
                        sqlComm.ExecuteNonQuery();
                    }
                    sqlTran.Commit();
                }
                catch (Exception ex)
                {
                    sqlTran.Rollback();
                    throw ex;
                }
            }
       }

但我不确定,这是否是正确的继续方式..? 请指教。

【问题讨论】:

    标签: c# ado.net


    【解决方案1】:

    如果是批量,我仍然会使用 SqlBulkCopy。只要数据不是庞大,我就会从列表中构造一个 DataTable(可能使用反射或 FastMember),然后将其传递给 SqlBulkCopy 实例(并提供事务)。

    【讨论】:

    • 我大概最多有 500 行数据。我应该按照自己的方式进行还是应该将数据转换回数据表。
    • @Muthukumar 那是边缘 - 我当然会考虑使用 SqlBulkCopy。请注意,我在这里提到的 DataTable 只是作为用于这一特定目的的工具;在其他任何地方,我都会将其保留为班级列表。不要将所有内容都更改为 DataTable - 想想小猫!
    • 非常感谢 Marc 提供的宝贵信息。
    猜你喜欢
    • 2012-12-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多