2011-03-09 11 views
7

Tutti,NHibernate 3.0 arrotondando un decimale a 5 decimali - perché?

Stavamo usando NHiberate 2.1 dove stiamo memorizzando valori decimali (tassi di cambio), ad es. 123.1234567 a 7 cifre decimali

Stiamo mappatura del tipo con stile mappatura predefinita:

<property name="ExchangeRate" not-null="true" /> 

Tuttavia quando abbiamo passare ad NHibernate 3.0 il valore di cui sopra viene salvato come 123,1,2345 milioni.

Esso non specifica questo cambiamento di comportamento nelle note di rilascio 3.0 anche se sembra al dettaglio che nel numero [NH-1594], il valore predefinito per decimale è decimale (19,5)

Abbiamo una soluzione cioè specificare quanto segue mappatura:

<property name="ExchangeRate" type="decimal(10,7) not-null="true" /> 

ho bisogno di sapere è questa soluzione il modo giusto per risolvere questo problema? Inoltre, perché c'è un cambiamento funzionale nel comportamento con arrotondamenti tra 2.1 e 3.0?

Cheers,

Billy Pila

+0

Sei sicuro che non sia dovuto alla progettazione del database? Stai usando lo stesso schema del database quando provi 3.0? – jishi

+0

Mi spiace, dovrebbe essere stato type = "decimal (14,7) – bstack

+0

Sì, lo stesso design del database .Se torno alla versione precedente di NHibernate, il problema non esiste. – bstack

risposta

9

che funziona, ma questo è più pulita IMO:

<property name="ExchangeRate" precision="10" scale="7" /> 

Un decimale non-null è implicito il tipo di proprietà.

+0

Preferirei l'altro modo di essere Onesto, grazie comunque per il suggerimento – bstack

+0

La mia domanda tuttavia è perché si arrotonda a 5 cifre decimali per impostazione predefinita in NH 3, mentre non lo ha fatto in NH2.1 ... – bstack

+2

@bstack è il tipo di domanda che può chiedere nella lista di sviluppo di nhibernate.Tuttavia, i tipi numerici esatti dovrebbero essere deterministici, quindi è meglio essere espliciti che fidarsi di un default non documentato. –

Problemi correlati