Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mapping entities for Sql Server Identity and Oracle Sequence with NHibernate

I have a application that uses C# and NHibernate and it will support SQL Server 2008, SQL Server 2012 and Oracle. I have been using fluent nhibernate to map my entities and I have some questions about how should I map the ID. Oracle supports only the Sequence, SQL Server 2008 only identity and Sql Server 2012 both. I would like to map in Sql Server (2008 and 2012) with Identity and Oracle with Sequence on the same code.

How should I map the ID to work for all databases?

It does not matter if I will have some IF's statement on my fluent mapping code. Looks my codes for mapping:

For SQL:

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

For Oracle:

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

PS: I do not want any workaround to achieve it. I want a NHibernate/Fluent-NHibernate solution to map it.

like image 254
Felipe Oriani Avatar asked Jun 20 '13 12:06

Felipe Oriani


1 Answers

Well, "Native" chooses Identity, sequence or HILO automatically depending on the used DB.

Using this xml mapping it should use identity or the sequence sq_customer if its Oracle:

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

This post describes things further.

like image 152
Tamim Al Manaseer Avatar answered Sep 29 '22 18:09

Tamim Al Manaseer