|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Есть форма с большим количеством объектов. В основном текст боксы, но могут быть и дропдауны. Юзер может изменить данные в нескольких объектах, а другие оставить как есть. Когда форма проверена, по нажатию кнопки, только изменённые данные должны уйти в базу данных, пользователь может отменить все изменения и тогда база меняться не должна. Есть идея на эвент __TextChanged каждого объекта, записать имя объекта в массив или List<> или может ещё куда и потом обходить только объекты из списка и вносить изменения в базе. Может-ли кто нибудь подсказать как это лучше сделать. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 00:26 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Ay-y... только изменённые данные должны уйти в базу данных ... Если не секрет, почему именно так ставится задача? Не вижу разницу в апдейте двух или ста полей в одной команде. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 05:38 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Ay-y, у Вас же не 1 МБ памяти в компах стоит - запоминайте на начале редактирования и после редактирования - и по тупому сравнивайте... а так вообще - чую ошибку проектирования - в топку прямые апдейты из гуи - работайте через хранимые процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 06:20 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Ау-у , вообще-то если данные "прибиндины" то так и происходит, у DataSet есть HasChanges(), да и выполнение адаптер.Update() занесет только измененные данные (строку всю), а если изменений не было то ни чего и не произойдет. Фиганыч и в чем цимус работы через хранимки (исключая конечно сложные запросы на изменение) в дополнительном говнокоде еще и в базе окромя говнокода в самой программе? Очень часто используется такой бред, хранимка принимает параметры всех полей таблицы и делает просто Update всех полей, это полный бред и доводы мол типа я там меняю таблицы и пр. и меняю только мол хранимку оставляя входные параметры прежними. Такое случается на самом деле редко и все равно приходится менять и код программы и код хранимки. Короче заместо одного говнокода, два, а если трех звенка, дак и три. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 07:52 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
fortibransa, на самом деле у хранимок есть ряд неоспоримых преимуществ: 1. Место изменения таблицы - одно (а не разбросанное по коду n-ое количество апдейтов). 2. Место оптимизации апдейта и изменения его - одно и оно тоже централизованное. 3. В случае изменения количества/типов параметров процедуры - падает с одной стандартной ошибкой (а не с кучей прочих с не очевидной причиной). 4. В случае использования апдейтов - получаешь баг - "забыл поменять апдейт в другом месте". 5. К тому же в случае изменения апдейта - при использовании апдейтов в интерфейсе он может и не упасть - и это ещё хуже - от сюда лезут баги. 5. Запрос к БД один - а не несколько, в случае каскадных апдейтов. 6. Не надо заморачиваться с транзакциями в интерфейсе - в процедуре с этим гораздо проще. 7. Проще с выдачей прав на объекты - даёшь права на запуск пакета/хранимой процедуры и всё, а не на каждую таблицу. И кроме того - данные из БД, тоже (и в первую очередь) стоит получаться через хранимки - все тежи плюсы + ко всему серверная оптимизация запросов (хинты, планы и прочее). ну и до кучи - гавно-кода в случае использования прямых апдейтов выходит гораздо больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 08:32 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Сразу по первому, Вы (теперь только так) не понимаете суть. Адаптер один, а где и сколько в коде стоит Update() абсолютно не имеет значения. Хранимки конечно нужны для сложных запросов. И подобного рода вопросы на форумах, задают начинающие и у них нет сложных БД. По вопросам оптимизации, она нужна в кривых и "доделанных" БД (коих большинство), а правильно спроектированная БД и оптимизации запросов не требует. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 08:43 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
коих большинство - хотел подчеркнуть, но будучи не совсем адекватным в данный момент взял и зачеркнул. В общем у меня мигрень. Как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 08:44 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
фиганычну и до кучи - гавно-кода в случае использования прямых апдейтов выходит гораздо больше. готовить не умеете (к п 1-7 тоже относится) 1,2,3,4 место обновления одно - сохранение модели в БД 5 - какие ещё апдейты в интерфейсе? 5а - количество запросов собственно к БД - одинаково 6 - транзакциям ни в интерфейсе ни в ХП делать нечего 7 - раздача прав на ХП не отменяет необходимости раздачи прав на табльцы про "серверную" оптимизацию - это тема для отдельного разговора всему есть время и место, и ХП, и ОРМ и трёхзвенке ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 08:47 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
BarkanAy-y... только изменённые данные должны уйти в базу данных ... Если не секрет, почему именно так ставится задача? Не вижу разницу в апдейте двух или ста полей в одной команде. два поля могут относиться к двум таблицам, а сто полей - к 100 таблицам ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 13:21 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Потому-что это важно, кто и когда внёс изменения в запись. Всё и работает через хранимые процедуры, вопрос в том, что в эти процедуры отправлять. В общем, пока остановились на таком решении, критикуйте. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Записываем Код: c# 1. 2. 3. 4. 5.
Считываем по нажатию кнопки. Код: sql 1. 2. 3. 4.
С шарпщик я действительно начинающий. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 17:27 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Ay-y, ну хотя бы это добавте. Код: c# 1. 2.
или вам нужны все возможные изменения? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 18:05 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
beg-in-er, Все возможные, они имеют право полностью обнулить данные. Или вы говорите о чём-то другом? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 18:25 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Ay-yкак это лучше сделать. google->event sourcing ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 18:31 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Ay-yЕсть форма с большим количеством объектов. В основном текст боксы, но могут быть и дропдауны. Юзер может изменить данные в нескольких объектах, а другие оставить как есть. Когда форма проверена, по нажатию кнопки, только изменённые данные должны уйти в базу данных, пользователь может отменить все изменения и тогда база меняться не должна. Есть идея на эвент __TextChanged каждого объекта, записать имя объекта в массив или List<> или может ещё куда и потом обходить только объекты из списка и вносить изменения в базе. Может-ли кто нибудь подсказать как это лучше сделать. Спасибо Ay-y - Ваш велосипед не поедет... или это будет совсем не то... Дайте автору ссылку как байндить данные к элементам управления... расскажите про BindingList, про INotifyPropertyChanged про ObservableCollection ... про DataSet наконец... Почему ни кто ORM'ы не пиарит? А то к Фаулеру посылать всяк горазд Проектик в аттачменте взят из статьи http://msdn.microsoft.com/en-us/magazine/dd263098.aspx Но, скорее всего, даже это вам не понадобится... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 18:52 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
А... Я про сто полей не прочел... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 19:01 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
buserПочему ни кто ORM'ы не пиарит? ну почему никто? я при всей нелюбви к ним упомянул без злобы, они ведь в первую очередь доя тех, кто не осилил SQL ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2013, 21:16 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
ИзопропилbuserПочему ни кто ORM'ы не пиарит? ну почему никто? я при всей нелюбви к ним упомянул без злобы, они ведь в первую очередь доя тех, кто не осилил SQLТипичное мнение тех, кто осилил SQL, но не осилил ORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2013, 11:30 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Изопропил7 - раздача прав на ХП не отменяет необходимости раздачи прав на табльцыдавно? о каком сервере БД речь? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2013, 20:06 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
ИзопропилbuserПочему ни кто ORM'ы не пиарит? ну почему никто? я при всей нелюбви к ним упомянул без злобы, они ведь в первую очередь доя тех, кто не осилил SQL Типичное мнение безголовых линейных sql-щиков. Банально и толсто. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2013, 20:15 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Ay-yЕсть форма с большим количеством объектов. В основном текст боксы, но могут быть и дропдауны. Юзер может изменить данные в нескольких объектах, а другие оставить как есть. Когда форма проверена, по нажатию кнопки, только изменённые данные должны уйти в базу данных, пользователь может отменить все изменения и тогда база меняться не должна. На форме нет объектов в смысле Object Там есть текст, число и датавремя. Можно, конечно, ловить в собитии RowChanged(ing) какие поля изменились в dataRow и в зависимости от этого вызывать разные запросы обновления. Но смысл? Update всех полей, по затратам процессорного времени, от Update некотрых полей находится на какой-то неуловимой величине. Кроме случай загрузки и апдейта BLOB. Если блобов нет, то можно не заморачиваться ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2013, 20:54 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
обезьянник внатуре. покедова. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2013, 22:23 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Дешевый вброс => однозначный респонз => фи, вы все недолюди, пойду я отседова Шикарно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2013, 22:27 |
|
Запись только изменённых данных.
|
|||
---|---|---|---|
#18+
Ay-y, А зачем вам апдейтить только измененные поля? так ли это важно? Почитайте лучшие рекомендации от ведущих БДводов - юзайте хранимые процедуры! Ваш экземпляр на форме с 100 полями может быть составлен из N-кого колва таблиц - юзайте хранимые процедуры! ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2013, 19:20 |
|
|
start [/forum/topic.php?fid=20&fpage=172&tid=1405041]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 129ms |
0 / 0 |