私たちは、96 ビットの数値 ID を作成する分散シーケンシャル ID ジェネレーターに取り組んでいます。この値のアプリケーションで使用するデータ型は ですdecimal
。データベース側では、列のデータ型はdecimal(28,0)
.
問題は、コードでマップして Id を構成するときに、精度とスケールを指定できないことです。理想的には、次のようなものが必要です。
map.Id(c => c.Id, id =>
{
id.Generator(RustFlakeGeneratorDef.Instance);
id.Precision(28); // nope
id.Scale(0); // nope. *$%!
});
それを無視しようとすると、NHibernate はパラメータを作成してコマンドを発行するときに使用に戻りdecimal(28,5)
ますが、これは機能しません。
チケットがあることは承知しており、そのうちに貢献したいと思います。それまでの間、これがうまくいくかどうかを確認する必要があるため、これに対する回避策があるかどうか疑問に思っています. カスタム型、逆シリアル化された HBM のハック、そのようなものはありますか?
から派生する独自の型を作成しようとしましたが、独自の精度とスケールを指定DecimalType
した を返すプロパティをオーバーライドしましたが、SqlType
何も起こらなかったようです。