0

CodeFluent 默认保持数据库连接打开。这样做有什么好处?使用设置 closeConnectionOnCompleteCommand="true" 在使用后关闭它们有什么缺点吗?

问候托马斯

4

1 回答 1

1

CodeFluent 运行时自动处理每个线程的数据库连接。主要好处是不用担心管理连接,因此您可以使用“客户”生成的类来做到这一点:

Customer customer = new Customer();
customer.Name = "Joe"
customer.Save();

而且您从未使用过连接对象或连接字符串,因为它们已配置并且是环境的。10 年前创建产品时,人们还不太习惯这种using说法(VB.NET 甚至不存在这种说法)。在引擎盖下,连接当然是打开的,并且永远不会关闭。它实际上与 ADO.NET 池的功能非常相似。

closeConnectionOnCompleteCommand如果所有运行时执行链(ADO 连接池最大大小、每个处理器的 IIS 最大线程、数据库服务器最大连接等)配置一致,则不需要使用该参数。

例如,如果池中有 100 个最大连接,而 SQL Server 中有 10 个最大连接,这是不一致的,因为在某一时刻,池中可能有更多 SQL Server 将接受的连接,并且您将从SQL 服务器。

从历史上看,这种错误很少发生,因为像 IIS 7 之前的服务器(或者可能是 Windows 或 .NET 改变了它的实际工作方式)并没有真正“旋转”池中的线程(你只会得到相同的几个线程)。现在从 IIS 7 开始,由于某种原因,线程一直在变化,因此连接将更快地自动创建,并且默认情况下不会关闭(默认每个线程一个)。因此,您会更频繁地遇到该错误。第一个解决方案是确保每个“最大值”配置一致。第二个解决方案是添加该closeConnectionOnCompleteCommand参数,让每个人的生活更轻松。

于 2015-11-29T15:42:59.437 回答