powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Типизир. DataSet и автоинкриментные поля - как вствлять?
8 сообщений из 8, страница 1 из 1
Типизир. DataSet и автоинкриментные поля - как вствлять?
    #33741972
Михаил Бор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Проблема - имеем таблицу с первичным ключом id , являющимся автоинкриментным полем. При добавление строк на клиенте колнка id автоматом зхаполнется новыми значениями, скажем c 1 по 10. Но возможно, сто другой user в эту таблицу вставил несколько строк с id 1 по 3. Что происходит когда вызываем SqlTableAdapter.Update(наша таблица). Adapter последовательно вставляет га сервер строки и автоматически меняет id строки клиента на то что оно получила на сервере. В нашем случае вместо первая строка с 1 заменится на 4 (это первое не занятое значение!) но 4 УЖЕ ЕСТЬ НА КЛИЕНТЕ! Получаем БАБАХ Exception и останов процесса! Как быть?
...
Рейтинг: 0 / 0
Типизир. DataSet и автоинкриментные поля - как вствлять?
    #33746844
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще-то это стандартный паттерн. Автоинкремент на клиенте делаем в минус а не в плюс
...
Рейтинг: 0 / 0
Типизир. DataSet и автоинкриментные поля - как вствлять?
    #33748379
Михаил Бор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что значит "патерн"? Я пока вышел из положения тем что первичный ключ сделал двойным - автоинкрементое поле + ещё одно, которым я сам меняю, но не ловко за "старшего брата"!
...
Рейтинг: 0 / 0
Типизир. DataSet и автоинкриментные поля - как вствлять?
    #33748482
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ saint

Михаил Бор
Я пока вышел из положения тем что первичный ключ сделал двойным - автоинкрементое поле + ещё одно, которым я сам меняю, но не ловко за "старшего брата"!

корявое решение, поищите по форумам по словам: autoincrement , identity , вопрос неоднократно обсуждался

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Типизир. DataSet и автоинкриментные поля - как вствлять?
    #33771477
Kicel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я сделал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
protected static void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs args)
{
// Include a variable and a command to retrieve the identity value from the Access database.
int newID =  0 ;
OleDbCommand idCMD = new OleDbCommand("SELECT @@IDENTITY from products", myConn);
if (args.StatementType == StatementType.Insert)
{
// Retrieve the identity value and store it in the RowId column.
newID = (int)idCMD.ExecuteScalar();
args.Row["Rowid"] = newID;
}
}
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Типизир. DataSet и автоинкриментные поля - как вствлять?
    #36846916
Andreas_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KicelЯ сделал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
protected static void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs args)
{
// Include a variable and a command to retrieve the identity value from the Access database.
int newID =  0 ;
OleDbCommand idCMD = new OleDbCommand("SELECT @@IDENTITY from products", myConn);
if (args.StatementType == StatementType.Insert)
{
// Retrieve the identity value and store it in the RowId column.
newID = (int)idCMD.ExecuteScalar();
args.Row["Rowid"] = newID;
}
}


подскажите ,а как ещё можно сделать без этого
Код: plaintext
1.
2.
// Retrieve the identity value and store it in the RowId column.
newID = (int)idCMD.ExecuteScalar();
args.Row["Rowid"] = newID;
я просто в книге Сеппы прочитал что вновь созданное автоинкрементальное ID родительской DataTable вставляется в нужное поле Дочерней DataTable посредством объекта DataRelation автоматически.

ТОлько вот у меня вроде всё настроено,но не вставляется.Кто то так делал?
...
Рейтинг: 0 / 0
Типизир. DataSet и автоинкриментные поля - как вствлять?
    #36847658
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andreas_84


Это Вы снова о вставке ?
...
Рейтинг: 0 / 0
Типизир. DataSet и автоинкриментные поля - как вствлять?
    #36849397
Andreas_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1306Andreas_84


Это Вы снова о вставке ?

Да,да))
я в принципе разобрался,как это делается с DataRelation (у меня не были просто определены Update & Delete Rule),но остался один маленький вопрос(в книге его умолчали,но думаю мои подозрения верны),а именно-Вот у нас есть родительский грид и дочерний,в родительском есть ключевое автоинкрементальное поле "emp_id" а в гриде родственников есть FK поле "emp_id",Добавили мы нового сотрудника "emp_id" проставилось -1,добавили ещё одного -2...и т.д,Вопрос состоит в том что -добавляя родственников в дочерний грид,правильно ВРУЧНУЮ проставлять значения "emp_id"(в зависимости например от Position в родителе если используется BindingSource брать значение "emp_id" в текущей родительской DataRow) или же как то автоматом тоже предусмотрено??
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Типизир. DataSet и автоинкриментные поля - как вствлять?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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