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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With