我在嘗試調用兩個方法並在數據庫中執行查詢時遇到問題。 這些方法使用using語句,所以它在使用後關閉連接。小巧玲瓏,避免「連接字符串屬性尚未初始化」錯誤
我創建了一個DapperContext,和我用簡單的注射器進行初始化,通過構造函數:
public DapperContext(int idPortal)
{
_connectionString = GetERPConnectionString(idPortal);
}
打開連接,並在數據庫中做一個查詢,我創建了這樣一個屬性:
public IDbConnection DapperConnection
{
get
{
if (_connection == null)
{
_connection = new SqlConnection(_connectionString);
}
if (_connection.State != ConnectionState.Open)
{
_connection.Open();
}
return _connection;
}
}
這DapperContext具有Dispose方法,在那裏它關閉連接:
public void Dispose()
{
if (_connection != null && _connection.State == ConnectionState.Open)
{
_connection.Close();
}
GC.SuppressFinalize(this);
}
在Repository類中,有一個方法將執行2個不同的Sqls,並且在它的方法中每個指定2個sqls。 基本上,每一個初始化這樣的:
using (IDbConnection conexao = dapperContext.DapperConnection)
{
... runs a query
}
當我調用的第一個方法中,查詢很好地運行,但是當第二mehod被調用時,在DapperConnection屬性,一個誤差在_connection.Open發生() ,因爲_connectionString是空的。
避免此錯誤的最佳方法是什麼?我知道connectionString因Dispose方法而丟失,但由於我使用SimpleInjector來創建我的實例,並且這是通過請求完成的,所以我只會在另一個請求中再次使用此connectionString。
嘿謝爾蓋,我這樣做的Dispose方法,所以至少_connectionString不是空的了,所以我能夠創建再次連接,沒有錯誤。 – Maturano