CodeFluent默认保持数据库连接处于打开状态。这样做有什么好处?使用设置closeConnectionOnCompleteCommand =" true"?
使用后关闭它们的任何缺点关心托马斯
答案 0 :(得分:1)
CodeFluent运行时每个线程自动处理数据库连接。主要的好处是不用担心管理连接,因此您可以通过"客户"生成的类:
Customer customer = new Customer();
customer.Name = "Joe"
customer.Save();
并且您从未使用过连接对象或连接字符串,因为它们已经配置并且是环境的。 10年前,当产品创建时,人们并不习惯using
语句(并且它甚至不存在于VB.NET中)。在引擎盖下,连接当然是打开的,从不关闭。它实际上与ADO.NET池的功能非常相似。
如果一致地配置了所有运行时执行链(ADO连接池最大大小,每个处理器的最大IIS最大线程数,数据库服务器最大连接数等),则不应该使用closeConnectionOnCompleteCommand
参数。
例如,如果池中有100个最大连接,SQL服务器中有10个最大连接,则表示不一致,因为在某个时刻,您可能在池中有更多连接,SQL Server将接受,您将从SQL服务器获得异常。
从历史上看,这个错误很少发生,因为像版本7之前的IIS之类的服务器(或者它的Windows或.NET改变了它的实际工作方式)并没有真正地“旋转”#34;池中的线程(您只获得相同的几个线程)。现在,自IIS 7以来,由于某种原因,线程一直在变化,因此连接将自动更快地创建,默认情况下不会关闭(默认情况下每个线程一个)。所以你会更频繁地得到这个错误。第一个解决方案是确保每个" max"一致配置。第二个解决方案是添加closeConnectionOnCompleteCommand
参数,让每个人的生活更轻松。