查询已插入但尚未提交的记录的上下文

时间:2011-10-24 16:41:34

标签: c# .net linq oracle

我搜索并搜索了stackoverflow和www,但没有找到这个问题的答案。

我循环浏览了许多记录,并且在某些条件下我将新记录插入表A.然后我再次循环另一个数据源(不能与第一个合并),如果是在这种情况下,我想在同一个表A中插入新记录。我只想在流程结束时提交记录,但如果我只是插入它们,它会给出主键冲突错误。

注意:linq不管理主键。可能是因为我有点像linq的菜鸟,并且不知道如何让linq与Oracle序列一起工作。

我的问题是如何检查已插入记录的现有上下文。这就是我在做的事情。

foreach(var rec in recordList1)
{
   ...
   dataContext.InsertOnSubmit(obj);
}

foreach(var rec in recordList2)
{
   if ( ! [check context here for existing record] )
   {
      ...
      dataContext.InsertOnSubmit(obj);
   }
}
dataContext.SubmitChanges();

我尝试过以不同的方式查询上下文,但它只会返回已提交的值。

提前致谢! 最好的问候。

1 个答案:

答案 0 :(得分:2)

要访问在datacontext中插入,更新,删除的对象,您需要调用GetChangeSet。

var changed = dataContext.GetChangeSet();
var inserted = changed.Inserts;
var updated = changed.Updates;
var deleted = changed.Deletes;