5

我有一个使用C#and的应用程序,NHibernate它将支持SQL Server 2008,SQL Server 2012Oracle. 我一直在使用流利的 nhibernate 来映射我的实体,我对如何映射 ID 有一些疑问。Oracle 仅支持序列、仅 SQL Server 2008 标识和 Sql Server 2012 两者。我想在 Sql Server(2008 和 2012)中使用 Identity 和 Oracle 与 Sequence 在相同的代码上进行映射。

我应该如何映射 ID 以适用于所有数据库?

我是否会在我的流利映射代码上有一些 IF 声明并不重要。查找我的映射代码:

对于 SQL:

Id(x => x.Id).GeneratedBy.Native();

对于甲骨文:

Id(x => x.Id).GeneratedBy.Sequence("SQ_Customer");

PS:我不想要任何解决方法来实现它。我想要一个NHibernate/Fluent-NHibernate解决方案来映射它。

4

1 回答 1

8

好吧,“Native”会根据使用的 DB 自动选择 Identity、sequence 或 HILO。

使用这个 xml 映射,它应该使用标识或序列sq_customer,如果它的 Oracle:

  <generator class="native" >
    <param name="sequence">sq_customer</param>
  </generator>

这篇文章进一步描述了事情。

于 2013-06-24T12:44:50.413 回答