我可以使用SqlBulkCopy将相同的主键更新到远程数据库吗?

时间:2013-12-23 10:21:52

标签: c# sql-server ado.net

我能够使用sqlbulk copy将记录更新为远程没有主键的表。 我可以将它用于主键表吗?

 public bool PublishMealDealDetail()
        {
            bool isUpdated = true;
            try
            {
                DataTable dtLocal = libEPOS.cMealDeal.GetAllMealDealDetailsDTForExport();
                if (dtLocal.Rows.Count > 0)
                {
                    //truncate table on web
                    string sqlTrunc = "TRUNCATE TABLE MealDealDetail";
                    SqlCommand cmd = new SqlCommand(sqlTrunc, connWeb, transaction);
                    // connWeb.Open();
                    cmd.ExecuteNonQuery();
                    SqlBulkCopy bulkcopy = new SqlBulkCopy(connWeb);
                    bulkcopy.DestinationTableName = "MealDealDetail";
                    try
                    {
                        bulkcopy.WriteToServer(dtLocal);
                    }
                    catch (Exception e)
                    {
                        transaction.Rollback();
                        isUpdated = false;
                        Console.WriteLine(e.Message);
                    }

                }
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                isUpdated = false;
                throw ex;
            }

            return isUpdated;
        }

1 个答案:

答案 0 :(得分:1)

在更新表格时,您可以使用System.Data.SqlClient.SqlBulkCopyOptions.KeepIdentity来保持从一个来源到其他来源的身份。

MSDN:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopyoptions(v=vs.110).aspx

System.Data.SqlClient.SqlBulkCopy bulkcopy = new System.Data.SqlClient.SqlBulkCopy(connWeb,System.Data.SqlClient.SqlBulkCopyOptions.KeepIdentity);