powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как избавиться от лишних апдейтов?
4 сообщений из 4, страница 1 из 1
Как избавиться от лишних апдейтов?
    #32453122
Paul Chabinsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть диалог редактирования сущьности...
В нем два поля прибиндинных:
нередактируемое - айди сущьности.
редактируюемое - текстовое значение.
Так же есть кнопка сохранить по нажатию которой делается EndEdit() и Update()

Проблемма в том что если до нажатия кнопки сохранить поиграться с значением текстового поля, но потом вернуть значение в такое же как и было изначально и сделать сохранение, то в базу проходит апдейт... В принципе строчка в базе остается неизменной, но мне этого делать крайне нежелательно ввиду особых причин...

Как от этого избавиться? Может кто подскажет?
...
Рейтинг: 0 / 0
Как избавиться от лишних апдейтов?
    #32453357
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал вариант специально для вашего случая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
System.Data.DataRow dr = this.dataSet1.Tables[ 0 ].Rows[ 0 ]; // это чисто для примера я тут взял первую строку, Вы берите свою текущую
if (dr.HasVersion(System.Data.DataRowVersion.Original) && dr.HasVersion(System.Data.DataRowVersion.Current))
{
	string original = (string)((DataRow)dr)[ "nameColumn" , DataRowVersion.Original];
	string current = (string)((DataRow)dr)[ "nameColumn" , DataRowVersion.Current];
	if (original == current)
	{
		dr.RejectChanges();
	}
}


Основная идея это сравниваем текущее значение с первичным и если они совпадают то сбрасываем флажок что запись модифицированна

Можно обработывать по одной записи сразу же, а можно и перед Update в цикле пробежаться по всем (но тут надо вводить дополнительные проверки).

P.S. Вообще сюда проверок можно добавить побольше
...
Рейтинг: 0 / 0
Как избавиться от лишних апдейтов?
    #32453382
Paul Chabinsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, что-то подобное я и представлял :)
...
Рейтинг: 0 / 0
Как избавиться от лишних апдейтов?
    #32456098
Paul Chabinsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что у меня получилось :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
bool hasChanges = false;
foreach(DataRow row in this.ds.stella_p_TovarSel.Rows)
{
	foreach(DataColumn col in row.Table.Columns)
	{
		if(!row.HasVersion(DataRowVersion.Original)||!row[col,DataRowVersion.Current].Equals(row[col,DataRowVersion.Original]))
		{
			hasChanges = true;
			break;
		}
	}
	if(hasChanges)
		break;
}
if(!hasChanges)
	this.ds.RejectChanges();
this.daTovar.Update(this.ds);


P.S> Еще раз спасибо :)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как избавиться от лишних апдейтов?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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