我使用Fluent NHibernate,我需要使用GeneratedBy.Native()生成Id,以支持Oracle,DB2和MSSQL数据库。如果我尝试在Oracle上运行它并将新记录插入到表中,我得到:
Could not execute query: select hibernate_sequence.nextval from dual
System.Data.OracleClient.OracleException (0x80131938): ORA-02289: sequence does not exist
映射类:
public sealed class ListDataMap : ClassMap<ListData>
{
public ListDataMap()
{
Table("LIST_DEF");
Id(x => x.Id, "ID").Not.Nullable().GeneratedBy.Native();
//other mapping
}
}
如何指定序列的名称?我不想使用hibernate_sequence因为我需要多于1个序列而且我不想拥有1个共享序列。
谢谢!
答案 0 :(得分:5)
我在这里找到答案:http://thatextramile.be/blog/2007/07/native-id-generation-with-nhibernate/
这很简单:
Id(x => x.Id, "ID").Not.Nullable().GeneratedBy.Native(
builder => builder.AddParam("sequence", "SEQ_LIST_DEF")
);