0

我正在使用 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

我在这里想念什么?提前致谢。

4

2 回答 2

1

对于在插入此实体时要检索的实体成员的数据库生成值,以下条件之一应为真:

  • 此成员的“自动生成值”属性设置为 true;
  • 此成员的“自动同步”属性设置为“OnInsert”或“Always”。

请检查是否满足其中任何一个条件。另外,请尝试更新到 dotConnect for Oracle 的 6.30.160 版本(如果您使用的是以前的版本)。

如果问题仍然存在,您能否向我们发送一个可以复制的测试项目?

于 2011-05-25T13:10:31.173 回答
1

好吧,我发现了问题,它与devart无关。问题原来是我将一个 IEnumerable(Of MyObject) 传递给该方法,这是另一个查询的结果。当我将此列表具体化为 List(Of MyObject) 并传递它时,db 生成的字段确实出现在我的对象中。我必须承认我不太明白为什么这很重要,但无论如何它解决了问题。希望这对其他人有所帮助

于 2011-05-26T12:01:52.243 回答