我搜索并搜索了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();
我尝试过以不同的方式查询上下文,但它只会返回已提交的值。
提前致谢! 最好的问候。
答案 0 :(得分:2)
要访问在datacontext中插入,更新,删除的对象,您需要调用GetChangeSet。
var changed = dataContext.GetChangeSet();
var inserted = changed.Inserts;
var updated = changed.Updates;
var deleted = changed.Deletes;