Я использую Fluent NHibernate для сопоставления базы данных Oracle. Это устаревшая база данных, поэтому я не могу изменить все, что хочу.
Есть поле GUID, но ключи все еще составные (я изменю это, как только смогу, чтобы ключи не были составными, но я не могу сделать это прямо сейчас). GUID - это поле VARCHAR2 с этим макетом: 551608b1-275d-49f6-9561-44d01aacf23f . GUID не добавляется последовательностью в Oracle, но вставляется из кода (C # или VB.net)
Guid.NewGuid()
Я сопоставляю ключи следующим образом (VB.net):
With CompositeId()
.KeyReference(Function(x) x.Well, "WellID")
.KeyProperty(Function(x) x.GUID, "GUID")
.KeyProperty(Function(x) x.SetDate, "SET_DATE")
End With
Или как это в C #
CompositeId()
.KeyReference(x => x.Well, "WellID")
.KeyProperty(x => x.GUID, "GUID")
.KeyProperty(x => x.SetDate, "SET_DATE");
Отображение отлично работает, и объект такой, какой я его хочу, пока мне не нужно сохранить.
Когда я пытаюсь сохранить или обновить неизмененный объект
m_Session.SaveOrUpdate(obj)
Я получаю: ORA-02289: последовательность не существует
Проблема в том, что я не использую последовательность для генерации моего GUID? Как я могу преодолеть это?