具有 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")

此致