我经常多次改变我的设计。
我有两个课程Shop
& Source
,
每个Shop
都有IList<Product>
(约1000件商品),
并且Source
有IList<Item>
(约200),
所有类都需要在同一个数据库上执行某些操作。
首先,我与所有对象共享一个开放的DbConnection
:
在构建我的 WebService 时,它变得有问题,
我缓存了开放静态DbConnection
(听起来很糟糕)并使用它
但是当测试多个请求时,当连接偶尔关闭并且ExecuteReader()
抛出(没有使用MARS)时,它开始出现问题。
阅读This以及其他许多建议依赖连接池的来源 我在查询之前替换了我的代码以打开连接,并在完成后处理它 但我注意到表现有所降低 我可以查看游泳池的功能(或者不是吗?)
问题:如何监控我的SqlConnection池?
问题:是否有任何其他设计可以在这些对象之间共享此连接。
非常感谢。
答案 0 :(得分:1)
性能下降可能与您管理数据库连接的方式无关。通常,重新创建连接不是一项昂贵的操作,.NET将为您集中/管理它们。您应该能够根据需要创建任意数量的连接,只需确保正确处理它们即可。您可能需要考虑基础查询或应用程序的其他方面的问题。
如何监控我的SqlConnection池?
是否还有其他设计可以在这些设备之间共享此连接 对象。
你是如何阅读连接字符串的?这本身可能是静态的,但我仍然依赖于连接池(正如你在研究中指出的那样)。你正确处理连接吗?
示例(静态连接字符串):
public static readonly string ConnectionString connString = ConfigurationManager.ConnectionStrings["YOURCONNECTION"].ConnectionString.ToString();
private void TestMethod()
{
using (var dbConn = new SqlConnection(connString)) {
string query = "select ....";
using (var dbCommand = new SqlCommand(query, dbConn)) {
...
}
}
}