And*_*bel 7 .net c# linq-to-sql
linq-to-sql datacontext如何保持数据库连接打开的规则是什么?
当我们对SubmitChanges()每个更新的实体进行一些性能测试而不是SubmitChanges()整个批次实体的性能测试时,问题出现了.结果:
在一个SubmitChanges()调用中插入3000个项目...持续时间:1318ms
在Transactionscope中的一个SubmitChanges()调用中插入3000个项目...持续时间:1280ms
在各个SubmitChanges()调用中插入3000个项目......持续时间:4377ms
在事务中的单个SubmitChanges()调用中插入3000个项目...持续时间:2901ms
请注意,在SubmitChanges()为每个更改的实体执行单独操作时,将所有内容放在事务中可以提高性能,这对我们来说非常意外.在sql server profiler中,我们可以看到SubmitChanges()事务中的各个调用不会为每次调用重置数据库连接,而不是没有事务的调用.
在什么情况下数据上下文保持连接打开?有没有关于linq-to-sql如何处理连接的详细文档?
你没有展示整个图片;默认情况下, LINQ-to-SQL 会将调用包装SubmitChanges在事务中。如果您将其与另一个事务包装在一起,那么您将不会看到连接重置;直到所有调用SubmitChanges完成并且外部事务提交后,它才能完成。
| 归档时间: |
|
| 查看次数: |
1951 次 |
| 最近记录: |