我想补充一个数据库,在这种情况下海量的信息,没有交易在我的LINQ To SQL模型。有谁知道如何关闭数据上下文或提交更改操作上的LINQ to SQL事务?如何禁用LINQ to Sql事务?
3
A
回答
2
据我所知,没有办法在插入时禁用事务而不将数据库的恢复模式从完整更改为简单。
但要小心,因为只能以简单恢复模式将数据库恢复到最新备份,并且将无法应用自执行备份以来发生的事务中的事务日志。
如果你可以配置一个批处理大小(我知道你可以用NHibernate,对LINQ to SQL没有正面评价)到100或更多,这也可以减少往返数据库的往返次数,这也会增加插入性能。
0
你不能只是将DataContext的Transaction属性设置为null吗?
2
由于LINQ to SQL will create a transaction if one doesn't exist,您所能做的最好的事情就是创建您自己的事务,并为您提供一个可接受的隔离级别。
Transaction transaction = new Transaction(IsolationLevel.Chaos);
try
{
using (var dc = new MyDataContext())
{
dc.Transaction = transaction;
...
transaction.Commit();
}
}
catch
{
transaction.Rollback();
}
或者,您可以提交每次更改,忽略故障。您仍然得到一笔交易,但它仅包含每个单独的变更。
foreach (var foo in foos)
{
using (var context = new MyDataContext())
{
context.Foos.InsertOnSubmit(foo);
try
{
context.SubmitChanges();
}
catch {}
}
}
0
设置ConflictMode到ContinueOnConflict,你将能够成功提交作品的任何变化,你必须在这还成功地为您跟进变化的异常的列表。
我有一个参考使用这种技术来阻止错误打了退堂鼓您提交更改:SandKeySoftware Linq Tutorial
如果分布式事务发生,这应该也是帮助:
using(var scope = new TransactionScope(TransactionScopeOption.Suppress))
{
//linqy stuff here
}
相关问题
- 1. 隐含的LINQ to SQL事务
- 2. LINQ to SQL中的嵌套事务
- 3. 的LINQ to SQL事务错误
- 4. Linq to SQL Compact - 事务或只是SubmitChanges
- 5. 如何滥用Linq-to-sql?
- 6. 禁用LINQ to SQL中的触发器
- 7. LINQ to SQL多个提交,我应该如何实现事务?
- 8. 如何学习EF或LINQ to SQL中的事务?
- 9. Linq to SQL Web服务XML
- 10. Linq To SQL - 如何禁用加载关联?
- 11. 如何禁用LINQ to SQL中追加的数据库名称
- 12. Linq to SQL如何工作?
- 13. 何时使用“Linq to sql”?
- 14. 使用LINQ to SQL
- 15. 使用LINQ to SQL
- 16. 服务器无法恢复事务。 Linq-To-SQL
- 17. 使用Linq-to-SQL的业务逻辑
- 18. 如何使用Linq-To-SQL以事务方式选择和更新?
- 19. LINQ到SQL事务
- 20. 如何使用groupBy与F#linq-to-sql?
- 21. 如何使用LINQ to SQL的
- 22. 如何在LINQ To SQL中使用.Count()?
- 23. 如何使用LINQ to SQL的
- 24. 如何使用LINQ to SQL的
- 25. 如何使用LINQ to SQL与mySQL
- 26. 使用LINQ to SQL实现Next/Previous使用LINQ to SQL
- 27. LINQ-To-SQL如何防止SQL注入?
- 28. LINQ to SQL Translation
- 29. LINQ to SQL
- 30. linq to sql“Contains”
SQL仍然执行隐式事务,即使您没有指定事务范围。 – 2009-12-06 22:20:57