[英]Using SQLConnection across multiple methods ('using' keyword yes or no)
我想在類中重復使用相同的SQLConnection accros不同的方法。 我現在正在做的(僅測試)是在構造函數中創建並打開一個連接:
SQLConnection Connection;
Constructor(string connection_string)
{
this.Connection = new SqlConnection(connection_string);
this.Connection.Open();
}
然后我在方法中使用“this.Connection”,最后在不再需要該對象時使用this.Connection.Close()和Dispose()。 據我所知,在每個方法中使用'using'會更加清晰(構造函數只會設置connection_string):
using (SqlConnection connection = new SqlConnection(connection_string)) {
connection.Open(); ...
}
由於連接池,實際上只使用了一個連接,盡管上面的“使用”行被放置在多個方法中(例如,當它們被一個接一個地調用時),是否正確? 但是,這不會創建許多只需要一個的SQLConnection實例嗎? 例如:
MyClass obj(some_string);
obj.Method1(); // calls 'using SqlConnection connection = new SqlConnection'
obj.Method2(); // calls 'using SqlConnection connection = new SqlConnection'
obj.Method3(); // calls 'using SqlConnection connection = new SqlConnection'
那么分享SQLConnection的最佳方式是什么?
你對所有陳述都是正確的。 但是你遺漏了一個重點: 在.NET中創建大量類型的實例並不一定是件壞事 !
using
范例 try...finall
塊(如果不使用using
) -如果您的具體情況並不土地本身以及對使用usings
; 例如使用異步方法) 現在,創建大量Connection類型實例不是問題的原因是因為.NET CLR中的對象被優化(快速內存分配和對象實例化)並且相對無痛(無需擔心釋放內存,這要歸功於垃圾收集)..在ADO.NET提供商的情況下,你也有連接池的好處,所以你不應該關心管理這種類型的實例數。
顯而易見的是,在其他情況下(例如重型/大型物體),創建大量物體會對內存壓力和性能產生影響。 因此,請盡可能地評估情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.