最近我的应用程序数据库已更新为使用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功能,如果有,我该如何使其工作?
答案 0 :(得分:2)
我认为你应该可以使用
Id(x => x.Id).Column("ID").GeneratedBy.SequenceIdentity("Your_Sequence_Name")
此致