Devart InsertAllOnSubmit不会更新数据库生成的字段

时间:2011-05-24 20:44:28

标签: linq oracle entity-framework devart

我正在使用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 个答案:

答案 0 :(得分:1)

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

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

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

如果问题仍然存在,请问send us一个可以复制的测试项目吗?

答案 1 :(得分:1)

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