当LINQ更新失败时会发生什么?
以下是场景:当LINQ更新失败时会发生什么?,linq,transactions,Linq,Transactions,以下是场景: 进程1(P1)-读取各种平面文件,其结果是删除或向数据库表添加照片URL,以指示需要下载这些URL 进程2(P2)-查找需要下载的照片URL,实际执行下载,然后将记录标记为已下载 P1和P2有时会根据要处理的数据量并发运行,有时P1会删除P2已加载并准备下载的记录 这实际上不是一个问题-如果图像已下载但不再需要,这些图像URL的性质是,它可能会在以后被使用,空间也不重要。因此,唯一的问题是,如果P2选择了一组记录,然后其中一些记录在LINQ更新期间不再存在,SubmitChan
- 进程1(P1)-读取各种平面文件,其结果是删除或向数据库表添加照片URL,以指示需要下载这些URL
- 进程2(P2)-查找需要下载的照片URL,实际执行下载,然后将记录标记为已下载
this.SomeDataContext.SubmitChanges();
如何更改此调用,以便可以执行的任何更新都将被忽略,而其他更新将被忽略?下面的方法是否起作用:
this.SomeDataContext.SubmitChanges(ConflictMode.ContinueOnConflict);
我在MSDN中没有看到任何指示无参数调用的默认ConflictMode的内容:
…尽管在单参数调用中有一个指示,表明默认值为FailOnFirstConflict:
使用Linq To SQL,调用SubmitChanges()时提交的所有更改都将作为单个事务保存或回滚。因此,如果在调用SubmitChanges()时有2个插入、2个更新和2个删除挂起,那么它们都将作为单个工作单元保存或回滚
通过将所有SubmitChanges()调用包装在TransactionScope对象中,可以进行多个SubmitChanges()调用,并将所有SubmitChanges()的所有插入/更新/删除作为一个工作单元处理。我本来会发表评论,但声誉不足 我在这里寻找默认冲突模式的答案。后来我发现 现在似乎已经有记录了