powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запись только изменённых данных.
24 сообщений из 24, страница 1 из 1
Запись только изменённых данных.
    #38175334
Ay-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть форма с большим количеством объектов. В основном текст боксы, но могут быть и дропдауны. Юзер может изменить данные в нескольких объектах, а другие оставить как есть. Когда форма проверена, по нажатию кнопки, только изменённые данные должны уйти в базу данных, пользователь может отменить все изменения и тогда база меняться не должна.
Есть идея на эвент __TextChanged каждого объекта, записать имя объекта в массив или List<> или может ещё куда и потом обходить только объекты из списка и вносить изменения в базе.
Может-ли кто нибудь подсказать как это лучше сделать.
Спасибо
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38175383
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ay-y... только изменённые данные должны уйти в базу данных ...
Если не секрет, почему именно так ставится задача?
Не вижу разницу в апдейте двух или ста полей в одной команде.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38175390
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ay-y,

у Вас же не 1 МБ памяти в компах стоит - запоминайте на начале редактирования и после редактирования - и по тупому сравнивайте...
а так вообще - чую ошибку проектирования - в топку прямые апдейты из гуи - работайте через хранимые процедуры.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38175414
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ау-у , вообще-то если данные "прибиндины" то так и происходит, у DataSet есть HasChanges(), да и выполнение адаптер.Update() занесет только измененные данные (строку всю), а если изменений не было то ни чего и не произойдет.
Фиганыч и в чем цимус работы через хранимки (исключая конечно сложные запросы на изменение) в дополнительном говнокоде еще и в базе окромя говнокода в самой программе?
Очень часто используется такой бред, хранимка принимает параметры всех полей таблицы и делает просто Update всех полей, это полный бред и доводы мол типа я там меняю таблицы и пр. и меняю только мол хранимку оставляя входные параметры прежними. Такое случается на самом деле редко и все равно приходится менять и код программы и код хранимки. Короче заместо одного говнокода, два, а если трех звенка, дак и три.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38175444
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fortibransa,

на самом деле у хранимок есть ряд неоспоримых преимуществ:
1. Место изменения таблицы - одно (а не разбросанное по коду n-ое количество апдейтов).
2. Место оптимизации апдейта и изменения его - одно и оно тоже централизованное.
3. В случае изменения количества/типов параметров процедуры - падает с одной стандартной ошибкой (а не с кучей прочих с не очевидной причиной).
4. В случае использования апдейтов - получаешь баг - "забыл поменять апдейт в другом месте".
5. К тому же в случае изменения апдейта - при использовании апдейтов в интерфейсе он может и не упасть - и это ещё хуже - от сюда лезут баги.
5. Запрос к БД один - а не несколько, в случае каскадных апдейтов.
6. Не надо заморачиваться с транзакциями в интерфейсе - в процедуре с этим гораздо проще.
7. Проще с выдачей прав на объекты - даёшь права на запуск пакета/хранимой процедуры и всё, а не на каждую таблицу.

И кроме того - данные из БД, тоже (и в первую очередь) стоит получаться через хранимки - все тежи плюсы + ко всему серверная оптимизация запросов (хинты, планы и прочее).

ну и до кучи - гавно-кода в случае использования прямых апдейтов выходит гораздо больше.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38175456
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу по первому, Вы (теперь только так) не понимаете суть. Адаптер один, а где и сколько в коде стоит Update() абсолютно не имеет значения.

Хранимки конечно нужны для сложных запросов.
И подобного рода вопросы на форумах, задают начинающие и у них нет сложных БД.

По вопросам оптимизации, она нужна в кривых и "доделанных" БД (коих большинство), а правильно спроектированная БД и оптимизации запросов не требует.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38175458
Фотография fortibransa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
коих большинство - хотел подчеркнуть, но будучи не совсем адекватным в данный момент взял и зачеркнул. В общем у меня мигрень. Как-то так.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38175462
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганычну и до кучи - гавно-кода в случае использования прямых апдейтов выходит гораздо больше.
готовить не умеете (к п 1-7 тоже относится)

1,2,3,4 место обновления одно - сохранение модели в БД
5 - какие ещё апдейты в интерфейсе?
5а - количество запросов собственно к БД - одинаково
6 - транзакциям ни в интерфейсе ни в ХП делать нечего
7 - раздача прав на ХП не отменяет необходимости раздачи прав на табльцы

про "серверную" оптимизацию - это тема для отдельного разговора

всему есть время и место, и ХП, и ОРМ и трёхзвенке
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38175945
Врунгель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BarkanAy-y... только изменённые данные должны уйти в базу данных ...
Если не секрет, почему именно так ставится задача?
Не вижу разницу в апдейте двух или ста полей в одной команде.

два поля могут относиться к двум таблицам, а сто полей - к 100 таблицам
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38176403
Ay-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому-что это важно, кто и когда внёс изменения в запись.
Всё и работает через хранимые процедуры, вопрос в том, что в эти процедуры отправлять.
В общем, пока остановились на таком решении, критикуйте.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  public static class listObject
        {
            public static List<Control> changedObject; // Static List instance

            static listObject()
            {
                changedObject = new List<Control>();
            }

            public static void Record(Control value)
            {
                changedObject.Add(value);
            }

        }



Записываем
Код: c#
1.
2.
3.
4.
5.
        private void txtApplication_TextChanged(object sender, EventArgs e)
        {
            classStatics.listObject.Record(txtApplication);

        }


Считываем по нажатию кнопки.
Код: sql
1.
2.
3.
4.
                foreach (var value in classStatics.listObject.changedObject)
                {
                    //считываем данные и отправляем их в бизнесс уровень и затем в базу
                }


С шарпщик я действительно начинающий.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38176472
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ay-y,
ну хотя бы это добавте.
Код: c#
1.
2.
if (!changedObject.Contans(value))
changedObject.Add(value);


или вам нужны все возможные изменения?
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38176502
Ay-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er,

Все возможные, они имеют право полностью обнулить данные.
Или вы говорите о чём-то другом?
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38176510
Фотография Верблюд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ay-yкак это лучше сделать.

google->event sourcing
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38176533
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ay-yЕсть форма с большим количеством объектов. В основном текст боксы, но могут быть и дропдауны. Юзер может изменить данные в нескольких объектах, а другие оставить как есть. Когда форма проверена, по нажатию кнопки, только изменённые данные должны уйти в базу данных, пользователь может отменить все изменения и тогда база меняться не должна.
Есть идея на эвент __TextChanged каждого объекта, записать имя объекта в массив или List<> или может ещё куда и потом обходить только объекты из списка и вносить изменения в базе.
Может-ли кто нибудь подсказать как это лучше сделать.
Спасибо

Ay-y - Ваш велосипед не поедет... или это будет совсем не то...

Дайте автору ссылку как байндить данные к элементам управления... расскажите про BindingList, про INotifyPropertyChanged про ObservableCollection ... про DataSet наконец... Почему ни кто ORM'ы не пиарит? А то к Фаулеру посылать всяк горазд

Проектик в аттачменте взят из статьи http://msdn.microsoft.com/en-us/magazine/dd263098.aspx

Но, скорее всего, даже это вам не понадобится...
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38176550
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А... Я про сто полей не прочел... :)
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38176680
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserПочему ни кто ORM'ы не пиарит?
ну почему никто?
я при всей нелюбви к ним упомянул без злобы, они ведь в первую очередь доя тех, кто не осилил SQL
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38177020
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилbuserПочему ни кто ORM'ы не пиарит?
ну почему никто?
я при всей нелюбви к ним упомянул без злобы, они ведь в первую очередь доя тех, кто не осилил SQLТипичное мнение тех, кто осилил SQL, но не осилил ORM.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38177760
Фотография Шайтан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил7 - раздача прав на ХП не отменяет необходимости раздачи прав на табльцыдавно? о каком сервере БД речь?
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38177765
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилbuserПочему ни кто ORM'ы не пиарит?
ну почему никто?
я при всей нелюбви к ним упомянул без злобы, они ведь в первую очередь доя тех, кто не осилил SQL
Типичное мнение безголовых линейных sql-щиков. Банально и толсто.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38177786
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ay-yЕсть форма с большим количеством объектов. В основном текст боксы, но могут быть и дропдауны. Юзер может изменить данные в нескольких объектах, а другие оставить как есть. Когда форма проверена, по нажатию кнопки, только изменённые данные должны уйти в базу данных, пользователь может отменить все изменения и тогда база меняться не должна.

На форме нет объектов в смысле Object

Там есть текст, число и датавремя.

Можно, конечно, ловить в собитии RowChanged(ing) какие поля изменились в dataRow и в зависимости от этого вызывать разные запросы обновления. Но смысл?
Update всех полей, по затратам процессорного времени, от Update некотрых полей находится на какой-то неуловимой величине. Кроме случай загрузки и апдейта BLOB.
Если блобов нет, то можно не заморачиваться
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38177825
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обезьянник внатуре. покедова.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38177827
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дешевый вброс => однозначный респонз => фи, вы все недолюди, пойду я отседова
Шикарно.
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38178210
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ay-y,

А зачем вам апдейтить только измененные поля? так ли это важно?
Почитайте лучшие рекомендации от ведущих БДводов - юзайте хранимые процедуры!
Ваш экземпляр на форме с 100 полями может быть составлен из N-кого колва таблиц - юзайте хранимые процедуры!
...
Рейтинг: 0 / 0
Запись только изменённых данных.
    #38178399
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилобезьянник внатуре. покедова.Было упомянуто без злобы. Обижаться не на что.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запись только изменённых данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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