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

C# 已插入但尚未提交记录的查询上下文,c#,.net,linq,oracle,C#,.net,Linq,Oracle,我搜索了stackoverflow和www,但没有找到这个问题的答案 我循环了许多记录,在某些情况下,我将新记录插入表a。然后我将在另一个数据源上再次循环(不能与第一个数据源合并),如果是这样,我希望将新记录插入同一个表a。我只希望在流程结束时提交记录,但如果我只是插入它们,它会给出主键冲突错误 注意:linq不管理主键。可能是因为我是linq的新手,不知道如何让linq使用Oracle序列 我的问题是如何检查已插入记录的现有上下文。这就是我正在做的 foreach(var rec in rec

我搜索了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();
我尝试过以不同的方式查询上下文,但它只返回提交的值

提前谢谢!
致以最诚挚的问候。

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

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

我不确定我是否完全理解这个问题,但使用TransactionScope是您的解决方案吗?不,贾斯汀的答案正是我想要的。无论如何,谢谢你。