データベースに保存するときに小数点以下の桁が小数点以下5桁に切り捨てられる場合があります。これは、小数点以下10桁の精度でマップしていても発生します。小数フィールドがHibernate 3.2とFluentNHibernate 1.3で切り捨てられました
私はNHibernateは3.2.0.4000とSQL Serverのここでは2008
とFluentNHibernate 1.3.0.717を使用していますが、私のC#のプロパティがされています
public virtual decimal? MyDecimalField { get; set; }
私は、オートマッピングの上書きをやってみました:
mapping.Map(x => x.MyDecimalField).Precision(28).Scale(10);
私は、フィールドの明示的なマッピングをやってみました:
をスキーマのエクスポートを行う、テーブルが正しく作成されます:私は
@p31 decimal(28,5)
@p31=5.12345
:
create table MyTable (
Id UNIQUEIDENTIFIER not null,
MyDecimalField DECIMAL(28, 10) null,
primary key (Id)
)
が5.1234567890の値を使用して、ここで生成されたSQL UPDATE文からのパラメータの抜粋です
<property name="Decimal01" precision="28" scale="10"/>
私はすべてのconventiを削除しました。小数フィールドのためにonsと問題がまだあります。
XMLベースのマッピングが機能するので、これがFluentの問題だと私は信じています。私が見逃したかもしれない何かの提案はありますか?
おかげで、 スキップ
nullableの代わりにdecimalを使用すると発生します? –
Firo
@Firo - null許容の10進数で同じ問題。 – SkipHarris
この違いを見る唯一の方法は、FNHが 'new PersistanceModel()を生成するものを出力することです。 model.Add(新しいClass1Map()); model.Write(Console.Out); ' – Firo