[英]Update Sql Table from a Dataset using C#
我正在尝试同步两个SQL数据库表。 例如,将本地数据库同步到Azure数据库。 到目前为止,我的方法是将本地数据库中的数据放入数据集中。 从Azure数据库中删除所有条目,然后将数据集插入Azure。
我已成功设法将本地数据库数据放入数据集中并删除了Azure数据。 但是我不能再将数据集插入到我的Azure表中。 做这个的最好方式是什么? 理想情况下,我不希望通过在应用程序中显式命名列来插入数据,因为我想将来对其进行证明,以防将来添加列。
到目前为止,我有:
private static bool UploadDataSet(DataSet ds)
{
try
{
using (SqlDataAdapter updateData = new SqlDataAdapter("",AzureSqlConnection))
{
updateData.Update(ds, ds.Tables[0].TableName);
Log.LogWriter(string.Format("Updating data in table {0}", ds.Tables[0].TableName), "Success");
return true;
}
}
catch (Exception ex)
{
Log.LogWriter(string.Format("Failed to update table {0}. Error {1}", ds.Tables[0].TableName, ex), "Failed");
throw;
}
}
但这实际上并没有将任何行上载到我的Azure数据库中。 我猜是因为我的数据集中的行的RowState保持不变。
PS。 我知道Azure上已经有一个同步代理,但这仍然处于预览阶段,不适合生产环境
好的,所以我最终使用此链接到达了那里:
private static bool UploadDataSet(DataSet ds)
{
try
{
SqlBulkCopy bulkCopy = new SqlBulkCopy(AzureSqlConnection, SqlBulkCopyOptions.TableLock | SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.UseInternalTransaction, null);
bulkCopy.DestinationTableName = ds.Tables[0].TableName;
bulkCopy.WriteToServer(ds.Tables[0]);
Log.LogWriter(string.Format("Updating data in table {0}", ds.Tables[0].TableName), "Success");
return true;
}
catch (Exception ex)
{
Log.LogWriter(string.Format("Failed to update table {0}. Error {1}", ds.Tables[0].TableName, ex), "Failed");
throw;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.