Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Merge не приводит к появлению HasChanges / 5 сообщений из 5, страница 1 из 1
26.11.2003, 13:21
    #32335269
Полуэкт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge не приводит к появлению HasChanges
Привет. глупый наверное вопрос, но если сделать ds1.Merge(ds2)
то строки в ds1 появляются но ds1.HasChanges == false... К чему бы это?
...
Рейтинг: 0 / 0
26.11.2003, 14:25
    #32335441
Katrinmc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge не приводит к появлению HasChanges
У метода Merge есть дополнительные параметры, в том числе и те которые отвечают за статус полученных строк...
...
Рейтинг: 0 / 0
26.11.2003, 15:44
    #32335632
Полуэкт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge не приводит к появлению HasChanges
Наверное я не правильно объяснил..

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

есть запись "компания" к ней приделаны записи "контакт". я показываю в ds1 данные к одной компании и все ее контакты. потом юзер нажимает кнопку "добавить" и выбирает новый контакт. этот контакт по моему плану должен был загрузиться в ds2 и когда юзеру надоест добавлять контакты - слить ds2 в ds1 и таким образом добавить нужные записи в главный датасет... что бы по выходу из главной формы ds1 проапдейтил базу нужным образом (т.е. создал записи связывающие "компанию" с новыми "контактами"). но на практике - в ds1 есть новые записи а проапдейтить я их не могу т.к. датасет думает что это его родные старые записи....

пытался просто скопировать datarow из ds2 в ds1 вместо слияния получил какую то странную балалайку типа ""This row already belongs to another table.""

что то я совсем отупел. как перенести строку из одной таблицы в другую? что? неужели конструировать новую строку и копировать каждое поле и потом делать типа ds1.dt1.Rows.Add(newrow) ?? что то тут не то...
...
Рейтинг: 0 / 0
26.11.2003, 15:59
    #32335671
Katrinmc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge не приводит к появлению HasChanges
Все дело в том что в датасете у строки есть свойство RowState и при выполнении Merge по умолчанию строки помечаются как неизмененные, если же выставить атрибуты у метода Merge то строки так и остануться помеченными как добавленные и следовательно попросятся на сохранение на сервер
...
Рейтинг: 0 / 0
26.11.2003, 17:25
    #32335818
Полуэкт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Merge не приводит к появлению HasChanges
спасибо за попытку помочь коренному жителю чукотки :)

на самом деле я конечно же попробовал все варианты ключей прежде чем начал вопить тут :)

и проблема теперь ясно в чем (зал дружно скандирует: "в генах!!!") - когда добавляешь записи в дс2 они попадают туда с роустейт = анченджед. и это очевидно правильно т.к. записи то добавлены целиком и ничего не менялось. и при перезаписи в дс1 они остаются анченджед т.к. при исопльзовании ключа при слиянии можно либо оставить изменения в дс1 или переписать их из дс2 но поскольку в дс1 они еще не существуют а в дс2 они анченджед то как ни крути мерджем эту задачу не выполнить и капец. поэтому пришлось руками копировать записи и на этом поставил точку.

для тех кто напорется на теже грабли:



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CorpObject.CorpContactsRow r;
for(int i= 0 ; i< corpContList.CorpContacts.Rows.Count; i++)
{
	r = _parentCorp.CorpContacts.NewCorpContactsRow();
	r.corpID           = ((CorpObject.CorpContactsRow)corpContList.CorpContacts.Rows[i]).corpID;
	r.contactID        = ((CorpObject.CorpContactsRow)corpContList.CorpContacts.Rows[i]).contactID;
	r.contactEmail     = ((CorpObject.CorpContactsRow)corpContList.CorpContacts.Rows[i]).contactEmail;
	r.contactEmployee  = ((CorpObject.CorpContactsRow)corpContList.CorpContacts.Rows[i]).contactEmployee;
	r.contactMobile    = ((CorpObject.CorpContactsRow)corpContList.CorpContacts.Rows[i]).contactMobile;
	r.contactWorkPhone = ((CorpObject.CorpContactsRow)corpContList.CorpContacts.Rows[i]).contactWorkPhone;
	parentCorp.CorpContacts.AddCorpContactsRow(r);
}
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Merge не приводит к появлению HasChanges / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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