powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Генерация GUID для поля
11 сообщений из 11, страница 1 из 1
Генерация GUID для поля
    #34990597
SergXIIIth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Подскажите, как сгенерировать GUID для ID поля, при вставке новой записи?

ID - первичный ключ таблицы, со всеми вытикающими.

Предполагаю, это необходими делать на клиете, иначе DataSet говорит о том, что Null значение не допустимо для поля ID.
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34991522
Думающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
system.guid.newguid
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34991552
SergXIIIth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думающий
Код: plaintext
system.guid.newguid


В какое событие поместить генерацию ?
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34991586
Думающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergXIIIth Думающий
Код: plaintext
system.guid.newguid


В какое событие поместить генерацию ?
Ну вы строку как добавляете, яж не знаю
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34991588
Думающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять же можно для таблицы значением по умолчанию поставить
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34992309
SergXIIIth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Default не получиться, т.к. при добавление в DataSet второй записи будет нарушение уникальность. Потому что записи еще находятся на клиете, на сервер ещё не отдавались!

Единственное место сгенерировать GUID, на мой взгляд, это событие AddNew объекта BindingSource. Однако у меня при этом возникает проблема создания объекта NewObject он должен быть DataRowView, как его создать не понятно.

Вот я и спрашиваю, где огранизовать генерацию GUID?
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34992370
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergXIIIth
Единственное место сгенерировать GUID, на мой взгляд, это событие AddNew объекта BindingSource.

совсем не единственное.

DataSet типизированный используете?


Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34993110
Думающий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergXIIIthDefault не получиться, т.к. при добавление в DataSet второй записи будет нарушение уникальность. Потому что записи еще находятся на клиете, на сервер ещё не отдавались!

Разве в датасет можно добавлять записи? таблицу видимо имеете ввиду. Не совсем понял почему будет нарушение уникальности то ?
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34993302
SergXIIIth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa

совсем не единственное.

DataSet типизированный используете?


Код: plaintext
 uid  =  S a
Posted via ActualForum NNTP Server 1.4

Да, использую типизированный DataSet.
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34995254
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergXIIIth
Да, использую типизированный DataSet.


Тогда ИМХО самый правильный способ будет это подписаться на TableNewRow где и генерировать необходимые ключи.

Примерно так, создайте partial своего типизированного датасете. и пропишите следующее:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public partial class MyTypedDataSet { // имя типизированного датасета
         public partial class MyTableDataTable { // имя класса описывающего необходимую таблицу датасета
             public override void BeginInit() { // перекрываем BeginInit чтобы подписаться на событие TableNewRow
                 this.TableNewRow += new System.Data.DataTableNewRowEventHandler(MyTableDataTable_TableNewRow);

             }

             void MyTableDataTable_TableNewRow(object sender, System.Data.DataTableNewRowEventArgs e) {
                 MyRow row = (MyRow)e.Row; // класс MyRow который описывает вашу строку
                 row.myID = guid(); // генерация гуида
             }
         }
}


P.S. прицитировании старайтесь вырезайте лишнее.


Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Генерация GUID для поля
    #34995485
SergXIIIth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Клевый совет!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Генерация GUID для поля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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