实体框架、Oracle和标识列

本文关键字:标识 Oracle 框架 实体 | 更新日期: 2023-09-27 18:27:36

我在Oracle中使用Entity Framework,当我需要自动生成主键列时,我会使用序列。当我创建edmx文件时,EF设计器无法识别此模式,因此我需要为所有Identity列手动将StoreGeneratedPattern="Identity"插入到edmx中。每次我需要更新我的模型时,我都会重复这一点。当模型变得很大并且更新频繁时,这就变得很耗时。

我想知道是否有一个更简单的方法,比如第一次在模型中添加表时,我可以在edmx中添加StoreGeneratedPattern="Identity"行,但随后的更新会自动添加该行。

实体框架、Oracle和标识列

在Oracle12c中,您有标识列。

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