具有 Fluent Nhibernate 的 Oracle 12c Identity 列
Oracle 12c Identity column with Fluent Nhibernate
最近我的应用程序数据库已更新为使用 Oracle 12c,因此在创建新表时我使用了新的标识功能:
ID NUMBER GENERATED ALWAYS AS IDENTITY,
在我的 Fluent 映射中,我配置了:
Id(x => x.Id).Column("ID").GeneratedBy.Identity();
然而,在尝试保存新记录时出现以下错误:
NHibernate.Exceptions.GenericADOException: could not insert:
[Entity][SQL: INSERT INTO TABLE (ID, AFFECTED_ID, AFFECTED_TYPE,
ACTION_TYPE, ACTION_OWNER, ENTITY_ID, ACTION_TIMESTAMP) VALUES
(hibernate_sequence.nextval, ?, ?, ?, ?, ?, ?) returning ID into
:nhIdOutParam] ---> Oracle.DataAccess.Client.OracleException:
ORA-02289: sequence does not exist
我可以清楚地看到它试图使用不存在的序列。
查看应用程序使用的当前 Nhibernate 版本似乎已过时:
<package id="NHibernate" version="3.3.2.4000" targetFramework="net45" />
Fluent NHibernate 1.3.0.733
Fluent Nhibernate 是否支持 Oracle 12c Identity 功能,如果支持,我该如何让它工作?
我想你应该可以使用
Id(x => x.Id).Column("ID").GeneratedBy.SequenceIdentity("Your_Sequence_Name")
此致
最近我的应用程序数据库已更新为使用 Oracle 12c,因此在创建新表时我使用了新的标识功能:
ID NUMBER GENERATED ALWAYS AS IDENTITY,
在我的 Fluent 映射中,我配置了:
Id(x => x.Id).Column("ID").GeneratedBy.Identity();
然而,在尝试保存新记录时出现以下错误:
NHibernate.Exceptions.GenericADOException: could not insert: [Entity][SQL: INSERT INTO TABLE (ID, AFFECTED_ID, AFFECTED_TYPE, ACTION_TYPE, ACTION_OWNER, ENTITY_ID, ACTION_TIMESTAMP) VALUES (hibernate_sequence.nextval, ?, ?, ?, ?, ?, ?) returning ID into :nhIdOutParam] ---> Oracle.DataAccess.Client.OracleException: ORA-02289: sequence does not exist
我可以清楚地看到它试图使用不存在的序列。
查看应用程序使用的当前 Nhibernate 版本似乎已过时:
<package id="NHibernate" version="3.3.2.4000" targetFramework="net45" />
Fluent NHibernate 1.3.0.733
Fluent Nhibernate 是否支持 Oracle 12c Identity 功能,如果支持,我该如何让它工作?
我想你应该可以使用
Id(x => x.Id).Column("ID").GeneratedBy.SequenceIdentity("Your_Sequence_Name")
此致