带有Fluent Nhibernate的Oracle 12c Identity列

时间:2015-08-19 10:08:06

标签: .net oracle fluent-nhibernate identity

最近我的应用程序数据库已更新为使用Oracle 12c,因此在创建新表时我使用了新的身份功能:

ID NUMBER GENERATED ALWAYS AS IDENTITY,

在我的Fluent映射中,我配置了:

Id(x => x.Id).Column("ID").GeneratedBy.Identity();

但是,在尝试保存新记录时,我收到以下错误:

  

NHibernate.Exceptions.GenericADOException:无法插入:   [Entity] [SQL:INSERT INTO TABLE(ID,AFFECTED_ID,AFFECTED_TYPE,   ACTION_TYPE,ACTION_OWNER,ENTITY_ID,ACTION_TIMESTAMP)值   (hibernate_sequence.nextval,?,?,?,?,?,?)将ID返回   :nhIdOutParam] ---> Oracle.DataAccess.Client.OracleException:   ORA-02289:序列不存在

我可以清楚地看到它试图使用不存在的序列。

查看当前版本的Nhibernate应用程序正在使用似乎已过时:

<package id="NHibernate" version="3.3.2.4000" targetFramework="net45" />
Fluent NHibernate 1.3.0.733

Fluent Nhibernate是否支持Oracle 12c Identity功能,如果有,我该如何使其工作?

1 个答案:

答案 0 :(得分:2)

我认为你应该可以使用

Id(x => x.Id).Column("ID").GeneratedBy.SequenceIdentity("Your_Sequence_Name")

此致