我能够使用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;
}
答案 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);