У нас есть приложение NHibernate, которое мы переносим с SQL Server на Oracle.Наш оптимистичный параллелизм реализуется с помощью элемента отображения <timestamp name="Version">
.
Тип данных соответствующего столбца Version
в Oracle - DATE
.После того, как мы сохранили объект, объект C # в памяти остается со значением метки времени в миллисекундах (например, 12: 34: 56.789), в то время как значение в базе данных является точным только с точностью до секунды (например, 12:34:56).Таким образом, если мы попытаемся сохранить объект во второй раз, мы получим StaleStateException, потому что два значения не совпадают.
Я попытался исправить это, изменив тип данных столбца Version
на TIMESTAMP(3)
.К сожалению, объект C # и значение DB по-прежнему отключены на одну миллисекунду (например, 12: 34: 56.789 против 12: 34: 56.788), поэтому вторая попытка сохранить объект по-прежнему вызывает исключение StaleStateException.
Чтоможно сделать для создания рабочего сопоставления <timestamp>
со столбцом Oracle типа DATE
или TIMESTAMP
, чтобы один и тот же объект можно было сохранить несколько раз?
Спасибо.
-- Брайан