SQL ServerからOracleに移行するNHibernateアプリケーションがあります。私たちの楽観的同時実行は<timestamp name="Version">
マッピング要素を介して実装されています。NHibernate <timestamp> OracleデータベースのマッピングによってStaleStateExceptionが発生する
Oracleの対応するVersion
列のデータ型はDATE
です。オブジェクトを保存した後、メモリ内のC#オブジェクトにミリ秒単位のタイムスタンプ値(たとえば12:34:56.789)が残されますが、データベースの値は正確に2番目の値(12:34:56など)になります。したがって、2回目にオブジェクトを保存しようとすると、2つの値が一致しないためStaleStateExceptionが発生します。
Version
列のデータ型をTIMESTAMP(3)
に変更することでこれを解決しようとしました。残念ながら、C#オブジェクトとDB値は1ミリ秒(12:34:56.789 vs 12:34:56.788など)でまだオフであるため、オブジェクトを保存する2回目の試みでもStaleStateExceptionが発生します。
私は、同じオブジェクトが複数回保存することができるように、Oracle型DATE
の列またはTIMESTAMP
に取り組ん<timestamp>
マッピングを作成するために何ができますか?
ありがとうございました。
- ブライアン
私はNHibernateのコードを最初に持っています。タイプ "タイムスタンプ"は、タイプTIMESTAMP(4)のOracleフィールドを生成します。どうすればTIMESTAMP(7)を生成させることができますか? –