3

SQL Server から Oracle に移行する NHibernate アプリがあります。オプティミスティック コンカレンシーは、<timestamp name="Version">マッピング要素を介して実装されます。

VersionOracle の対応する列のデータ型は ですDATE。オブジェクトを保存した後、メモリ内の C# オブジェクトにはミリ秒単位のタイムスタンプ値 (例: 12:34:56.789) が残りますが、データベースの値は秒単位 (例: 12:34:56) までしか正確ではありません。したがって、オブジェクトを 2 回保存しようとすると、2 つの値が一致しないため、StaleStateException が発生します。

Version列のデータ型を に変更して、これを修正しようとしましたTIMESTAMP(3)。残念ながら、C# オブジェクトと DB 値はまだ 1 ミリ秒ずれているため (例: 12:34:56.789 対 12:34:56.788)、オブジェクトを 2 回保存しようとすると、StaleStateException が発生します。

<timestamp>タイプの Or​​acle 列への有効なマッピングを作成しDATEたりTIMESTAMP、同じオブジェクトを複数回保存できるようにするにはどうすればよいですか?

ありがとう。

-- ブライアン

4

1 に答える 1

4

TIMESTAMP(7) は、.NET DateTime クラスと一致する正しい精度を持ち、問題を修正しました。

于 2011-01-22T04:04:24.523 に答える