2014-10-24 5 views
3

Я использую Entitiy Framework с Oracle, и я использую последовательности, когда мне нужны столбцы с автогенерированными первичными ключами. Когда я создаю проект edmx, дизайнер EF не распознает этот шаблон, поэтому мне нужно вставить StoreGeneratedPattern = «Identity» в файл edmx вручную для всех столбцов identitiy. Я повторяю это каждый раз, когда мне нужно обновить мою модель. Когда модель становится большой, и часто происходят обновления, это становится трудоемким.Entity Framework, Oracle и Identiity Column

Интересно, есть ли более простой метод, например, в первый раз я добавляю таблицу в модель. Я могу добавить строку StoreGeneratedPattern = «Identity» в edmx, но после обновлений автоматически добавьте эту строку.

ответ

0

В Oracle 12c у вас есть столбец идентичности.

SQL> drop table identity_table purge 
    2/

Table dropped. 

SQL> 
SQL> CREATE TABLE identity_table (
    2 ID   NUMBER GENERATED ALWAYS AS IDENTITY, 
    3 txt  VARCHAR2(30) 
    4 ) 
    5/

Table created. 

SQL> 
SQL> INSERT INTO identity_table(txt) VALUES('id number 1'); 

1 row created. 

SQL> INSERT INTO identity_table(txt) VALUES('id number 1'); 

1 row created. 

SQL> INSERT INTO identity_table(txt) VALUES('id number 1'); 

1 row created. 

SQL> 
SQL> SELECT * FROM identity_table; 

     ID TXT 
---------- ------------------------------ 
     1 id number 1 
     2 id number 1 
     3 id number 1 

SQL> 

Oracle фактически создает последовательность для вас, все, что вам нужно сделать, это создать столбец идентификаторов NUMBER GENERATED ALWAYS AS IDENTITY.

+0

Lalit, спасибо за ответ, но использование Oracle 12c для меня сейчас не вариант, 11g используется в компании в настоящий момент. Я в порядке с добавлением триггера и последовательности самостоятельно, но добавление storegeneratedpattern = "identity" становится обузой для сложных моделей. То, что я пытаюсь сделать, - избегать установки этой строки вручную каждый раз, когда я обновляю модель, если это возможно. – erdem

Смежные вопросы