В C # у меня есть метод для вставки массива строковых значений в sql db.Это выглядит примерно так:
void ProcessRow(string[] row)
{
using (SqlConnection myConnection = new SqlConnection("myConnectionString"))
{
myConnection.Open();
var myCommand = new SqlCommand("INSERT INTO mytable bla bla bla using content of row"), myConnection);
myCommand.BeginExecuteNonQuery();
}
}
Метод ProcessRow(string[] row)
вызывается в цикле for для вставки нескольких разных строк.Однако, когда код выполняется, в mytable ничего не добавляется.Когда я заставляю ProcessRow(string[] row)
немного подождать после каждой вставки, как показано
void ProcessRow(string[] row)
{
using (SqlConnection myConnection = new SqlConnection("myConnectionString"))
{
myConnection.Open();
var myCommand = new SqlCommand("INSERT INTO mytable bla bla bla using content of row"), myConnection);
myCommand.BeginExecuteNonQuery();
System.Threading.Thread.Sleep(100);
}
}
, тогда все работает нормально, и мои строки добавляются в mytable.
Мой вопрос: что идет не так при первом подходе, без добавления сна (100)?Такое чувство, что существует какая-то проблема параллелизма, но я не понимаю, как это возможно, поскольку каждая вставка содержится в использовании () {}.