Fel*_*ani 5 .net c# nhibernate nhibernate-mapping fluent-nhibernate
我有一个使用C#和NHibernate它将支持的应用程序SQL Server 2008,SQL Server 2012和Oracle.我一直在使用流利的nhibernate来映射我的实体,我对如何映射ID有一些疑问.Oracle仅支持Sequence,仅SQL Server 2008身份和Sql Server 2012.我想在Sql Server(2008和2012)中使用Identity和Oracle with Sequence在相同的代码上进行映射.
我应该如何映射ID以适用于所有数据库?
如果我在流畅的映射代码上有一些IF声明,那也没关系.看我的代码映射:
对于SQL:
Id(x => x.Id).GeneratedBy.Native();
Run Code Online (Sandbox Code Playgroud)
对于Oracle:
Id(x => x.Id).GeneratedBy.Sequence("SQ_Customer");
Run Code Online (Sandbox Code Playgroud)
PS:我不想要任何解决方法来实现它.我想要一个NHibernate/Fluent-NHibernate解决方案来映射它.
好吧,"Native"会根据使用的DB自动选择Identity,sequence或HILO.
使用这个xml映射它应该使用标识或序列,sq_customer如果它的Oracle:
<generator class="native" >
<param name="sequence">sq_customer</param>
</generator>
Run Code Online (Sandbox Code Playgroud)
这篇文章进一步描述了事情