Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите! Проблема с разрешением Concurrency. / 1 сообщений из 1, страница 1 из 1
09.05.2007, 13:00
    #34514491
Chosen 0ne
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите! Проблема с разрешением Concurrency.
Здравствуйте,

Ниже приведен код, отвечающий за разрешение Concurency конфликтов..
Т.е. мы получаем массив строк, в которых возникли конфликты, и для каждого даем пользователю возможность выбрать - сохранить ли его изменеиня, или не сохранять.
Проблема в том, что dataSet11.Merge(row_to_merge); не работает, строка не смерживается с датасетом... dataSet11.Merge(tempItemsDataTable); - работает, но в этом случае с дата сетом смерживаются все конфликтные строки из БД, а не по одной, как требуется.

Код

dataSet11.Merge(row_to_merge, true, MissingSchemaAction.Add);
sqlDataAdapter1.Update(dataSet11);

тоже не работает, база не обновляется. Хотя

dataSet11.Merge(tempItemsDataTable, true, MissingSchemaAction.Add);
sqlDataAdapter1.Update(dataSet11);

опять же работает. Но обновляется вся база, а нужно чтоб пользователь мог принимать решение для каждой конфликтной строки индивидуально...

Что в этом коде не так? Буду рад любой помощи...


private void button4_Click(object sender, EventArgs e)
{
sqlDataAdapter1.ContinueUpdateOnError = true;
sqlDataAdapter1.Update(dataSet11);

if (dataSet11.test_table.HasErrors == true)
{
// Берем данные из базы
sqlDataAdapter1.Fill(tempItemsDataTable);

// получаем массив строк с ошибками
DataSet1.test_tableRow[] error_rows =
(DataSet1.test_tableRow[])dataSet11.test_table.GetErrors();

foreach (DataSet1.test_tableRow error_row in error_rows)
{
DataSet1.test_tableRow row_in_db =
tempItemsDataTable.FindByid(error_row.id);

string s =
"Original: " + error_row["name", DataRowVersion.Original].ToString() + "\n" +
"Current in DB: " + row_in_db.name + "\n" +
"Proposed: " + error_row["name", DataRowVersion.Current].ToString() + "\n" +
"Do you still want to update table with the proposed value?";

DataSet1.test_tableRow[] row_to_merge = { row_in_db };

DialogResult response = MessageBox.Show(s, "Concurrency Exception", MessageBoxButtons.YesNo);

if (response == DialogResult.Yes)
{
dataSet11.Merge(row_to_merge, true, MissingSchemaAction.Add);
sqlDataAdapter1.Update(dataSet11);
}
else
{
dataSet11.Merge(row_to_merge);
}
}
}
}
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите! Проблема с разрешением Concurrency. / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]