данных Это мой стол:Получение ошибки параллельности на обновление записи с адаптером
Студент: StudentId int PK autoincrement,Name varchar(20)
Когда я пытаюсь обновить последние добавленные записи об ошибке, то я адресности:
Ошибка: Concurrency violation: the UpdateCommand affected 0 of the expected 1 records.
Это мой код:
using (var connection = new SqlConnection("MyConnectionstring"))
{
connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter();
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.SelectCommand = new SqlCommand("select * from Student", connection);
DataTable dt = new DataTable();
adapter.Fill(dt);
DataRow row = dt.NewRow();
row["Name"] = "Abc";
dt.Rows.Add(row);
var addedRecords = dt.GetChanges(DataRowState.Added);
adapter.Update(dt);
dt.AcceptChanges();
DataRow lastRow = dt.Rows[dt.Rows.Count - 1];
row["Name"] = "Pqr";
adapter.Update(dt); //Error Here
connection.Close();
}
Может кто-нибудь, пожалуйста, скажите мне, почему это происходит и что может быть обходным путем для этой проблемы?
Вы изменили ту же строку дважды. Это было намеренно? Или вы намеревались изменить последнюю строку? –
Я думаю, если вы хотите изменить lastrow, int lastrow = dt.Rows.Count - 1; row [lastrow] ["Name"] = "pqr"; –
@PanagiotisKanavos: сначала я хочу добавить запись, а затем я хочу обновить эту недавно добавленную запись, и на самом деле я пытаюсь понять процесс rowstate, поэтому я делаю это –