我有一个使用C#
和NHibernate
的应用程序,它将支持SQL Server 2008
、SQL Server 2012
和Oracle
。我一直在使用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进一步描述了事情。