2017-02-24 11 views
1

SQL Serverのイメージフィールドに大きなイメージをバイト配列として挿入しようとするとNHibernateバージョン4.1.0に問題があります。私のマッピングは次のようになります:NHibernateがイメージタイプのためトランザクションをコミットできません

<property name="BinaryContent" column="MyContent" not-null="false" /> 

問題は、トランザクションをコミットできません。小さな画像がうまく機能しているように見えるので、切り捨てが原因であると思います。

私はマッピングを変更し、タイプを指定して、この問題の回避策を持っている:

<property name="BinaryContent" column="MyContent" not-null="false" type="BinaryBlob" /> 

しかし、問題は、それは私が変更する必要があり、多くのマッピングファイルと非常に大規模なプロジェクトです。だから私はこれをプロジェクトでグローバルかつ自動的に行うことを楽しみにしています。

(注意:NHibernateは2.1で、これは魅力のように働いていた)

答えて

1

いいえ、私は恐れています。
SQL Serverの場合、長さが8000を超える必要がある場合はBinaryBlobタイプを使用するマッピングが必要です。またはマッピングでmaxixumの長さを明示的に設定する必要があります。
byte[]のデフォルト値はBinaryで、マッピングタイプが指定されていない場合はdocを参照してください。なぜこれがNH 2.1で動作していたのか分かりません。

NH-2764号でこれが確認されています。

+1

いくつかの以前のバージョンのNHibernateは、状況によっては自動的に切り捨てられてデータを破壊しました。 –

+0

@OskarBerggren知っておいてよかった!ありがとう! – rpfc

+0

フレデリック非常にありがとう!私のマッピングを変更する時間。 – rpfc

関連する問題