Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как обновлять таблицу на сервере из DataSet посредством хранимых процедур / 7 сообщений из 7, страница 1 из 1
31.10.2006, 11:34
    #34093506
superbluesman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновлять таблицу на сервере из DataSet посредством хранимых процедур
Уважаемые специалисты!

Дано: Visual Studio 2005, MS SQL 2005, доступ к таблицам на сервере только посредством хранимых процедур, каждая таблица имеет первичный Identity-ключ.

Хотелось бы: в Win-форме есть некий грид (родной от MS или DevExpress - не суть важно); при открытии этой формы пользователь видит в гриде записи, далее в гриде он может отредактировать, удалить существующие, добавить новые записи. Наконец, пользователь нажимает кнопку <сохранить>, после чего приложение стучится до сервера БД и в соотвующей серверной таблице добавляются, редактируются, удаляются записи.

Хотелось бы услышать best practice (схематичный код) - как обновлять измененения в DataView на серевере БД .

В web-приложениях для себя выработал логику, однако в WIN-приложениях она отличается и на данный момент могу ошибаться.

Я так полагаю:

вариант №1

- из DataView, который привязан к гриду, посредством что-то вроде GetChanges() получаем другой DataView2; в этом DataView2 только новые или отредактированные записи; перебирая в цикле для каждой записи вызываем хранимую процедуру добавления новой или редактирования существующей. Если на сервере для записи всё прошло ок, то для записи в DataSet-е делаем AcceptChange.

Но вот как быть с удалёнными записями???

вариант №2

при каждом действии в гриде (добавление, удаление, редактирование), вызываем соотв. хранимую процедуру, и если она отработала успешно, то:

- для новой записи в ключевое поле записываем возвращаемое хранимкой значение Identity и фиксируем запись

- для отредактированной записи - просто её фиксируем

- для удаленной на сервере - удаляем из DataView
...
Рейтинг: 0 / 0
01.11.2006, 06:19
    #34096050
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновлять таблицу на сервере из DataSet посредством хранимых процедур
superbluesman
вариант №1

- из DataView, который привязан к гриду, посредством что-то вроде GetChanges() получаем другой DataView2; в этом DataView2 только новые или отредактированные записи; перебирая в цикле для каждой записи вызываем хранимую процедуру добавления новой или редактирования существующей. Если на сервере для записи всё прошло ок, то для записи в DataSet-е делаем AcceptChange.

Но вот как быть с удалёнными записями???

Можно и так, а какая проблема с удаленными?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
01.11.2006, 11:05
    #34096568
superbluesman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновлять таблицу на сервере из DataSet посредством хранимых процедур
вопрос: как лучше? правильно ли я мыслю?
...
Рейтинг: 0 / 0
01.11.2006, 11:22
    #34096655
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновлять таблицу на сервере из DataSet посредством хранимых процедур
Правильно никто не скажет, нужно знать постановку задачи и т.п....

Если Вас устраивают оба варианта по конечному результату, то ИМХО первый предпочтительнее.

А чтобы вообще не заморачиваться, по поводу ручного обхода строк. отдайте сабж на откуп DataAdapter'у, при правильной настройке, он сам проделает описываемые в варианте № 1 действия.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
01.11.2006, 11:34
    #34096737
superbluesman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновлять таблицу на сервере из DataSet посредством хранимых процедур
Собственно постановка и требования заказчика простые:

пользователи должны иметь возможно максимально быстро вводить данные в гриде и при нажатии конпку <Сохранить> - таблица на сервере обновляется с учётом всех изменений
...
Рейтинг: 0 / 0
03.11.2006, 12:05
    #34103595
zz118
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновлять таблицу на сервере из DataSet посредством хранимых процедур
можно посмотреть в сторону диффграм и их парсинга на серваке, благо механизмы позволяют.
...
Рейтинг: 0 / 0
04.11.2006, 15:58
    #34105719
Roman S. Golubin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обновлять таблицу на сервере из DataSet посредством хранимых процедур
Можно отправлять DataSet в процедуру в виде xml и разбирать уже на сервере.

Или как вариант, создать на сервере рабочие таблицы и виды к ним. Разрешения дать только на виды. Далее логика простая - данные сливаем в виды, затем запускаем процедуру, которая из этих видов данные забирает и делает с ними что-то.
В рабочей таблице должно быть поле с автозаполнением его каким-то уникальным идентификатором (при однопоточном клиенте - suser_sname(), например), а вид должен фильтровать данные поэтому полю.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как обновлять таблицу на сервере из DataSet посредством хранимых процедур / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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