0

Devart の Linq to Oracle コンポーネントを使用しています。データベース内のシーケンスを介して更新されるフィールドを持つテーブルがあります。これは、1行を挿入するときにうまく機能します:

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

ここで何が欠けていますか?前もって感謝します。

4

2 に答える 2

1

このエンティティが挿入されたときに取得されるエンティティ メンバーのデータベース生成値については、次のいずれかが true である必要があります。

  • このメンバーの「自動生成値」プロパティは true に設定されています。
  • このメンバーの 'Auto-Sync' プロパティは 'OnInsert' または 'Always' に設定されています。

これらの条件のいずれかが満たされていることを確認してください。また、dotConnect for Oracle の 6.30.160 バージョンに更新してみてください (以前のビルドを使用している場合)。

問題が解決しない場合は、問題を再現できるテスト プロジェクトを送っていただけないでしょうか。

于 2011-05-25T13:10:31.173 に答える
1

まあ、私は問題を見つけました、そしてそれはdevartとは何の関係もありませんでした. 問題は、別のクエリの結果である IEnumerable(Of MyObject) をメソッドに渡していたことであることが判明しました。このリストを List(Of MyObject) に具体化して代わりに渡すと、データベースで生成されたフィールドオブジェクトに表示されました。なぜこれが重要なのかよくわからないことを認めなければなりませんが、とにかく問題は修正されました. これが他の誰かに役立つことを願っています

于 2011-05-26T12:01:52.243 に答える