Devart InsertAllOnSubmit не обновляет сгенерированные БД поля - PullRequest
0 голосов
/ 25 мая 2011

Я использую компоненты Devart Linq to Oracle.У меня есть таблица с полем, которое обновляется с помощью последовательности в базе данных.Это прекрасно работает при вставке одной строки:

Dim db As New DataContext

db.MyObjects.InsertOnSubmit(MyObject)

db.SubmitChanges()

На этом этапе MyObject.Version будет содержать идентификатор версии, созданный в базе данных.Поэтому я ожидал, что этот код будет работать нормально:

Dim db As New DataContext

db.MyObjects.InsertAllOnSubmit(MyObjectsList)

db.SubmitChanges()

Но когда я это сделаю, поле Version не изменится во всех объектах MyObjectsList, даже если строки добавляются в таблицу.

Что мне здесь не хватает?Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 26 мая 2011

Ну, я нашел проблему, и это не имело ничего общего с devart.Проблема оказалась в том, что я передавал IEnumerable (Of MyObject) методу, который был результатом другого запроса.Когда я материализовал этот список в List (Of MyObject) и передал его, вместо этого в моих объектах появились поля сгенерированные БД did .Должен признать, я не совсем понимаю, почему это имело значение, но в любом случае это решило проблему.Надеюсь, что это поможет кому-то еще

1 голос
/ 25 мая 2011

Для сгенерированного базой данных значения элемента сущности, который нужно извлечь при вставке этой сущности, должно быть одно из следующих значений:

  • свойство «Auto Generated Value» этого элемента равноустановить в true;
  • для свойства «Автосинхронизация» этого элемента установлено значение «Вкл.» Или «Всегда».

Убедитесь, что выполнено любое из этих условий.Также попробуйте обновить до версии 6.30.160 dotConnect для Oracle (если вы используете предыдущую сборку).

Если проблема не устранена, пожалуйста, отправьте нам тестовый проектс которой это можно воспроизвести?

...