实体框架、Oracle和标识列
本文关键字:标识 Oracle 框架 实体 | 更新日期: 2023-09-27 18:27:36
我在Oracle中使用Entity Framework,当我需要自动生成主键列时,我会使用序列。当我创建edmx文件时,EF设计器无法识别此模式,因此我需要为所有Identity列手动将StoreGeneratedPattern="Identity"插入到edmx中。每次我需要更新我的模型时,我都会重复这一点。当模型变得很大并且更新频繁时,这就变得很耗时。
我想知道是否有一个更简单的方法,比如第一次在模型中添加表时,我可以在edmx中添加StoreGeneratedPattern="Identity"行,但随后的更新会自动添加该行。
在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
。