我有一个使用C#NHibernate的应用程序,它将支持SQL Server 2008SQL Server 2012Oracle。我一直在使用fluent nhibernate来映射我的实体,我对如何映射id有一些疑问。oracle只支持序列,sql server 2008只支持identity和sql server 2012都支持。我想在sql server(2008和2012)中映射identity,在同一代码中映射oracle和sequence。
如何将id映射到所有数据库?
在我流畅的映射代码中是否有if语句并不重要。查找我的映射代码:
对于SQL:

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

对于Oracle:
Id(x => x.Id).GeneratedBy.Sequence("SQ_Customer");

附言:我不想有任何变通办法来实现它。我想要一个NHibernate/Fluent-NHibernate解决方案来映射它。

最佳答案

好吧,“本机”根据使用的数据库自动选择标识、序列或hilo。
使用此XML映射时,如果其Oracle:

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

This post进一步描述了事情。

08-25 13:05
查看更多