如何正确使用Fluent NHibernate来获取Oracle中的下一个序列?

时间:2010-11-04 14:41:00

标签: oracle nhibernate fluent-nhibernate

我正在使用NHibernate / Fluent NHibernate与Oracle,我遇到了一个问题。我已经定义了以下映射文件:

public OrderMap()
{
    Table("ORDERS");
    Id(x => x.OrderId, "ORDER_ID").GeneratedBy.Sequence("select ORDERS_SQ.nextval from orders");
    Map(x => x.CreatedBy, "CREATED_BY");
    Map(x => x.OrderStatusCd, "ORDER_STATUS_CD");
    Map(x => x.StoreGroupId, "STORE_GROUP_ID");
    Map(x => x.IsActive, "IS_ACTIVE");
    Map(x => x.OrderDate, "ORDER_DATE");
}

当我去运行我的项目时,我收到以下错误:

创建SessionFactory时使用了无效或不完整的配置。

如果我删除.GeneratedBy.Sequence("select ORDERS_SQ.nextval from orders");行,应用程序会运行,但是当我保存记录时,我显然没有得到下一个序列。我试过只做.GeneratedBy.Sequence("ORDERS_SQ");,但我似乎没有任何工作正常。

有人能告诉我使用Fluent NHibernate正确获取下一个可用序列的正确方法吗?

我正在使用Fluent NHibernate 1.1和NHibernate 3.0 Beta。

感谢。

1 个答案:

答案 0 :(得分:4)

只需指定序列的名称:

Id(x => x.OrderId).Column("ORDER_ID").GeneratedBy.Sequence("ORDERS_SQ");

// Real working code:
Id(x => x.Id).GeneratedBy.Sequence("SEQ_Catalog1");