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

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

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

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


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


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

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

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

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

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


Код: plaintext
 uid  =  S a

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

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

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

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


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

Да, использую типизированный DataSet.
...
Рейтинг: 0 / 0
07.12.2007, 19:03
    #34995254
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация GUID для поля
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
07.12.2007, 23:25
    #34995485
SergXIIIth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Генерация GUID для поля
Спасибо! Клевый совет!
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Генерация GUID для поля / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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