이것은 (나에게 어쨌든) 흥미 롭습니다. 그리고 누구든지이 행동에 대한 좋은 대답과 설명이 있는지 알고 싶습니다.정적/싱글 톤 리소스 참조 블록 사용
싱글 톤 데이터베이스 개체 (또는 정적 데이터베이스 개체)가 있다고 가정하면 Foo 클래스에 저장되어 있다고 가정합니다.
public class Foo
{
public static SqlConnection DBConn = new SqlConnection(ConfigurationManager.ConnectionStrings["BAR"].ConnectionString);
}
그런 다음 호출하고 연결을 폐기의 유용성을 인식하고 있다고 말할 수 있습니다 (이 예를 들어 척이 그림의 목적을위한 일회성 사용). 따라서 Dispose() 호출을 처리하기 위해 'using'블록을 사용하기로 결정했습니다.
using (SqlConnection conn = Foo.DBConn)
{
conn.Open();
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = conn;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "SP_YOUR_PROC";
cmd.ExecuteNonQuery();
}
conn.Close();
}
"ConnectionString 속성이 초기화되지 않았습니다"라는 연결에 대한 호출에서 예외가 발생합니다. app.config/web.config에서 연결 문자열을 가져 오는 데는 문제가 없습니다. 디버그 세션에서 조사 할 때 Foo.DBConn은 null이 아니지만 빈 특성이 있음을 알 수 있습니다.
왜 이런가요?
없음을이있다. 코드의 정적이 아닌 변형을 사용하면 효과가 입증됩니다. –