gpt4 book ai didi

c# - Linq-to-sql 上下文数据库连接处理

转载 作者:太空狗 更新时间:2023-10-29 20:25:19 24 4
gpt4 key购买 nike

linq-to-sql 数据上下文如何保持数据库连接打开的规则是什么?

当我们对每个更新实体的一个 SubmitChanges() 而不是对整批实体的一个 SubmitChanges() 进行一些性能测试时,问题就出现了。结果:

Inserting 3000 items in one SubmitChanges() call... Duration: 1318ms

Inserting 3000 items in one SubmitChanges() call, within transactionscope... Duration: 1280ms

Inserting 3000 items in individual SubmitChanges() calls... Duration: 4377ms

Inserting 3000 items in individual SubmitChanges() calls within a transaction... Duration: 2901ms

请注意,当为每个更改的实体执行单独的 SubmitChanges() 时,将所有内容都放在事务中提高性能,这对我们来说是非常出乎意料的。在 sql server 分析器中,我们可以看到事务中的单个 SubmitChanges() 调用不会为每个调用重置数据库连接,这与没有事务的调用相反。

在什么情况下数据上下文保持连接打开?是否有关于 linq-to-sql 如何处理连接的详细文档?

最佳答案

您并没有展示完整的图片;默认情况下,LINQ-to-SQL 将在事务中包装对 SubmitChanges 的调用。如果你用另一个事务包装它,那么你不会看到连接重置;直到所有 SubmitChanges 调用完成,然后提交外部事务。

关于c# - Linq-to-sql 上下文数据库连接处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7488310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com