У меня есть программа на c # .net, в которой мне нужно сначала вставить данные в таблицу, используя соединение SQL, а затем настроить тот же набор данных, используя ADO.net. Я не уверен, как убедиться, что вставка через соединение SQL завершена, прежде чем делать изменения ado.net. Я получаю нарушение параллелизма, когда я пробую код ниже. Я предполагаю, что это проблема состояния гонки.
Я получаю ошибку нарушения параллелизма в точке оператора UpdateAll, и мне кажется, что я не могу обойти ее
Спасибо за помощь.
Ниже приведен пример кода с изменениями SQL и ado.net, значительно упрощенными.
try
{
String deleteQuery = "DELETE FROM dbo.TABLENAME";
String reportQuery = @"
INSERT INTO TABLENAME
(
COLUMN1,
COLUMN2,
COLUMN3
)
SELECT
COLUMN1,
COLUMN2,
COLUMN3
FROM OTHERTABLES
";
SqlConnection ReportConnect = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
cmd.Connection = ReportConnect;
cmd.CommandTimeout = Convert.ToInt32(Properties.Settings.Default.ReportTimeout.ToString());
ReportConnect.Open();
cmd.CommandText = deleteQuery;
cmd.ExecuteNonQuery();
cmd.CommandText = reportQuery;
cmd.ExecuteNonQuery();
ReportConnect.Close();
ReportConnect.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
try
{
foreach (DataRow dr in DataSet.TABLENAME)
{
dr[0] = whatever;
dr[0] = 100;
dr[0] = 42.42;
}
}
catch (Exception ax)
{
MessageBox.Show(ax.Message);
}
finally
{
this.tableAdapterManager.UpdateAll(this.DataSet);
}