Re: Entiy Framework и "правильный" primary key
От: SteckInc  
Дата: 25.08.09 05:38
Оценка: 1 (1)
Здравствуйте, VintVV, Вы писали:

VVV>Задача кажется довольно простая, но я ни как не могу сделать....


VVV>Есть таблица в БД, у нее один PK = ID, в тригере на befor insert в эту таблицу поставлен

VVV>автоинкремент поля ID. Триггер:

VVV>CREATE OR ALTER TRIGGER MODULE_BI FOR MODULE

VVV>ACTIVE BEFORE INSERT POSITION 0
VVV>AS
VVV>BEGIN
VVV> IF (NEW.ID_MODULE IS NULL) THEN
VVV> NEW.ID_MODULE = GEN_ID(GEN_MODULE_ID,1);
VVV>END

VVV>Сделал маппинг таблицы в EF, вызываю статический метод ObjectContext для создания

VVV>данного объекта, а он зараза требует ID.... но как я узнаю текущее значение генератора
VVV>для определения этого уникального ID.

VVV>Можно было бы конечно взять максимальный ID из всего набора и для нового элемента увеличивать его,

VVV>но где гарантия что этот ID >= значению генератора, ведь вставлять может не только данная прога

VVV>ПОМОГИТЕ!


Если значения инкрементируются всеми прогами, которые пишут в таблицу, то можно завести отрицательное "магическое" число,
на которое и проверять в триггере.
Кроме того, если есть возможность, то может быть стоит сделать PK типа UNIQUEIDENTIFIER?
Когда кому-то придется менять структуру таблиц или мерждить несколько баз, то скажут спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.