powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Обновление DataSet
6 сообщений из 6, страница 1 из 1
Обновление DataSet
    #32542444
Mikhail123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, кто знает. Возникла такая проблема. У меня есть таблица, состоящая из одной строки. Я изменяю значение одной ячейки и хочу записать изменения в БД, а в это время кто-то другой изменил другую ячейку в этой строке. Так вот, как сделать так, чтобы оба изменеия сохранились в БД?
...
Рейтинг: 0 / 0
Обновление DataSet
    #32542545
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Структура таблицы? Какую БД используешь?

>Так вот, как сделать так, чтобы оба изменеия сохранились в БД?

Вариантов несколько. Один из простых использовать хранимой процедуры (если СУБД :-))) позволяет использование хранимых процедур) на которую и возложить столь почетную миссию :-)

Однако как же Primary Key в такой ситуации?
...
Рейтинг: 0 / 0
Обновление DataSet
    #32542582
Mikhail123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БД SQL Server, структура таблицы простая, несколько техтовых колонок, несколько с датами. Хотелось бы избежать написания хранимых процедур, потому как я в это не особо понимаю, а как-нибудь по другому. Если нет других вариантов, то как примерно будет выглядеть эта ХП?
...
Рейтинг: 0 / 0
Обновление DataSet
    #32542701
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если MS SQL - то используйте хранимые процедуры (совет)

Примерно так:

1) В хранимую процедуру передаем значения в столбцах перед изменением (Original, @original_column1, @original_column2) и после (Current , например @current_column1, @current_column2)

2) ищем запись по Original:
а) если не находим, то Insert новую запись значениями из Current
b) если находим, то Update эту запись значениями из Current

Только я не понимаю у вас что в вашей таблице нет PrimaryKey - ведь он бы не дал двух записей с одним первичным ключом?
...
Рейтинг: 0 / 0
Обновление DataSet
    #32542811
Mikhail123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть PrimaryKey. Попробую объяснить подробнее. Моя прога ищет в БД строку по id(он же PrimaryKey) и возвращает ее в виде таблицы с одной строкой. Затем я привязываю databinding каждую ячейку к textboxам интерфейса. Я могу поменять одно значение и сохранить это в БД. Но в это время другой пользователь может выбрать эту запись и тоже в ней что-то изменить. Когда создавал DataAdapter я поставил галку Optymistyc cuncurrency. При попытке обновления соответственно у меня появляется ошибка. А если галку убрать, то перезаписывается строка целиком и соответственно теряюся изменеия другого пользователя. А мне надо, чтобы и мои изменения сохранились и другого пользователя тоже, а если изменили одинаковую ячейку, то записывальсь значения того, кто последний сохранял.
...
Рейтинг: 0 / 0
Обновление DataSet
    #32542913
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> При попытке обновления соответственно у меня появляется ошибка. А если галку убрать, то перезаписывается строка целиком и соответственно теряюся изменеия другого пользователя. А мне надо, чтобы и мои изменения сохранились и другого пользователя тоже, а если изменили одинаковую ячейку, то записывальсь значения того, кто последний сохранял.

Ну правильно, у вас не может быть две записи с одним первичным ключом.

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


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