Entity Framework、Oracle和Identity Column

3
我正在使用带有Oracle的Entity Framework,并在需要自动生成的主键列时使用序列。当我创建edmx文件时,EF设计器无法识别此模式,因此我需要手动为所有标识列插入StoreGeneratedPattern="Identity"到edmx文件中。每次更新我的模型时都要重复此操作。当数据模型变得庞大且更新频繁时,这会变得很耗时。
我想知道是否有更简单的方法解决这个问题,例如第一次向模型添加表格时,我可以将StoreGeneratedPattern="Identity"线添加到edmx中,但是随后的更新可以自动添加该行。
1个回答

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


Lalit,感谢您的回答,但目前我无法使用Oracle 12c,公司目前正在使用11g。我可以自己添加触发器和序列,但对于复杂模型来说,添加storegeneratedpattern="identity"会变得很麻烦。如果可能的话,我想避免每次更新模型时手动添加这行代码。 - erdem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接