|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Всем добрый день. У меня клиент-серверное приложение. Передаю DataSet через string используя сериализацию. Все таблицы в DataSet имеют первичный ключ. Я хочу сэкономить трафик передачи данных. Для этого хочу передавать только изменения данных. Для экономии места я использую на сервере хранилище DataSet dataSetCache и выполняю Merge с новыми данными. Столкнулся с одной проблемой. Данные отличаются всего в одной строке, а функция GetChanges() возвращает огромный DataSet (после сериализации занимает 5 метров). Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Подскажите в чем может быть проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 09:54 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Nikolay206Для экономии места я использую на сервере хранилище DataSet dataSetCache и выполняю Merge с новыми данными. Смешно, выбрал самый громозский класс в нэте для экономии места ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 10:20 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
А что вы можете предложить взамен? Нужно из БД считать данные в нескольких таблицах. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 10:50 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Nikolay206А что вы можете предложить взамен? Нужно из БД считать данные в нескольких таблицах. использовать бизнес-классы ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 10:54 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Не понимаю что поменяется. На сколько сильно будет отличаться сериализованный файл бизнес объекта от сериализованного датасета? Ведь вместо <Table> в сериализации будет имя класса, а вместо <имя колонки> будет имя проперти. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 10:59 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
MissingSchemaAction.AddWithKey зачем? У тебя походу колонка(и) добавляется. В результате все записи таблицы считаются изменёнными. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 13:13 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Нет, не добавляется. Все колонки одинаковые. Я же говорю беру сохраненный датасет, далаю WriteXml в файл. Потом мержу на него изменения и снова делаю WriteXml В результате сравниваю два файла. Они отличаются только одной строчкой. Сейчас вообще getChanges возвращает null. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 13:39 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Вот код Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 13:41 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Ни как не могу понять почему dataSet.GetChanges() возвращает null Хотя данные реально изменены. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2012, 14:36 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Господа, есть ли у кого-нибудь опыт работы с dataSet.Merge и dataSet.GetChanges() Почему после Merge GetChanges возвращает null? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2012, 10:56 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Nikolay206Господа, есть ли у кого-нибудь опыт работы с dataSet.Merge и dataSet.GetChanges() Почему после Merge GetChanges возвращает null? GetChanges всегда будет возвращать null после AcceptChanges() , Merge здесь непричём ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2012, 15:52 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Да, но разве Merge не сливает два DataSource? Логично было бы сделать метод для просмотра данных, которые были добавлены. Есть ли вообще такая возможность? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2012, 16:23 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Nikolay206Да, но разве Merge не сливает два DataSource? Логично было бы сделать метод для просмотра данных, которые были добавлены. Есть ли вообще такая возможность? информация для GetChanges берётся из DataRow.RowState, а оное, после AcceptChanges, = Unchanged ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2012, 16:45 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
То есть для получения изменений Merge не подходит. Как я понимаю я должен тупо сравнить новый DataSet со старым в цикле и добавить в старый отсутствующие данные а так же измененные. Далее я должен пробежаться по старому DataSet и удалить из него строки, отсутствующие в новом DataSet. А после всего этого сделать GetChanges. Так я получу все изменения DataSet? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2012, 17:01 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Nikolay206То есть для получения изменений Merge не подходит. Как я понимаю я должен тупо сравнить новый DataSet со старым в цикле и добавить в старый отсутствующие данные а так же измененные. Далее я должен пробежаться по старому DataSet и удалить из него строки, отсутствующие в новом DataSet. А после всего этого сделать GetChanges. Так я получу все изменения DataSet? не нужно всего этого просто не делай AcceptChanges() ... |
|||
:
Нравится:
Не нравится:
|
|||
24.09.2012, 18:30 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
У меня есть DataSet со старыми данными. Далее я выполняю SqlCommand cmd = new SqlCommand("GetDataStoredProc"); для вызова хранимки получения данных. А дальше я хочу передать только измененные данные по сети. Если передавать DataSet с новыми данными, то он очень большой. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2012, 10:06 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Nikolay206У меня есть DataSet со старыми данными. Далее я выполняю SqlCommand cmd = new SqlCommand("GetDataStoredProc"); для вызова хранимки получения данных. А дальше я хочу передать только измененные данные по сети. Если передавать DataSet с новыми данными, то он очень большой. теперь тоже самое по-русски ... |
|||
:
Нравится:
Не нравится:
|
|||
25.09.2012, 13:20 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Я заливаю данные в DataSet через хранимки. Код: c# 1.
После выполнения этой команды я получаю 12 мб данных. Через какое-то время данные изменились, например добавилась одна строчка. Повторный вызов Код: c# 1.
вернет новые данные. Задача определить чем отличается старый DataSet от нового. Результат выполнения функции - xml в которой я понимаю что нужно просто добавить одну строчку и все. Далее вместо того, чтобы передавать 12 мб клиенту, я передаю этот xml. Клиент накатывает эти изменения и получает свежие данные. Реализацию можно сделать по средствам сравнивания одного DataSet с другим и написания xml сценария (добавить такие строки, удалить следующие, изменить третьи). Есть ли какой-то другой механизм выполнения этих сравнений? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2012, 10:40 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Nikolay206Я заливаю данные в DataSet через хранимки. Код: c# 1.
После выполнения этой команды я получаю 12 мб данных. Через какое-то время данные изменились, например добавилась одна строчка. Повторный вызов Код: c# 1.
вернет новые данные. Задача определить чем отличается старый DataSet от нового. Результат выполнения функции - xml в которой я понимаю что нужно просто добавить одну строчку и все. Далее вместо того, чтобы передавать 12 мб клиенту, я передаю этот xml. Клиент накатывает эти изменения и получает свежие данные. Реализацию можно сделать по средствам сравнивания одного DataSet с другим и написания xml сценария (добавить такие строки, удалить следующие, изменить третьи). Есть ли какой-то другой механизм выполнения этих сравнений? здесь вам Merge не подходит, он не для этого создан ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2012, 12:52 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
Это я уже понял. Есть ли какой-нибудь механизм, который позволит быстро определить внесенные изменения или мне нужно все прописывать руками? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2012, 14:09 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
pation, а для чего он создан? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2012, 19:08 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
ViPRospation, а для чего он создан? как видно из названия он предназначен для объединения данных, но никак не для поиска различий между ними ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2012, 19:14 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
pation, а если после объединения вызвать адаптер для сохранения то что будет? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.09.2012, 19:39 |
|
Непонятное поведение DataSet.Merge()
|
|||
---|---|---|---|
#18+
ViPRospation, а если после объединения вызвать адаптер для сохранения то что будет? попробуй, посмотрим результат ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2012, 13:38 |
|
|
start [/forum/topic.php?fid=17&fpage=31&tid=1350237]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 173ms |
0 / 0 |