1

float 列で SQL Server 2012 を使用すると、 NHibernate: Wrong column type: found float, expected double precisionに似た問題が発生しますが、C# シングルの場合です。ただし、カスタム方言で列の型を FLOAT(24) として登録すると、「Found: float, Expected REAL」と表示されます。

つまり、実行しない場合RegisterColumnTypeは findfloatと wantsREALを実行し、実行RegisterColumnTypeすると find real と wants float を実行します。

誰かがこの問題を見て、それを修正できましたか?

4

1 に答える 1

1

テストデータベースでNHibernateが生成したスキーマを確認し、SQLサーバーのドキュメントを読んだ後、私の質問に対する答えが見つかりました。

私のローカルデータベースにはタイプの列がありreal、本番データベースにはタイプの列がありましたfloatrealはですがFLOAT(24)float(ドキュメントから理解できるように)実際にはFLOAT(53)です。これは、C#タイプがである必要がdoubleあることを意味します。つまり、リンクされた質問がその対処方法に答えます。データベース列をに変更することを決定しましたreal。その後、方言を変更せずに機能します。

于 2013-03-18T11:14:05.640 に答える