우리는 저장 프로 시저의 이름과 입력 매개 변수를 가져 와서 결과를 데이터 테이블로 반환하는 SQL 유틸리티 클래스를 가지고 있습니다. 이것의 뒤에있는 추론은 우리가 연결을 닫고 연결 누출을 잊는 것에 대해 걱정할 필요가 없기 때문입니다. 또한 데이터 액세스 레이어에서 데이터 어댑터 및 데이터 보관함을 다시 만들 필요가 없어 코드를 줄일 수 있습니다.유틸리티 클래스로 SQL 연결을 관리하는 방법은 무엇입니까?
내가 가진 문제점은 우리가 객체를 생성하기 위해 반복 할 수 있도록 데이터 테이블을 채우고 있다는 것입니다. 그래서 우리는 기본적으로 datareader처럼 사용하고 있습니다. datareader 또는 dataadapter를 반환하는 클래스에 대해 읽었습니다. 하지만이 문제는 클라이언트가 연결을 열고 닫아야하거나 Finalize 메서드로 연결을 닫아야한다는 것입니다. 가비지 콜렉션이 데이터베이스 연결을 종료하는 것을 원하지 않는 것 같습니다.
요약하면 모든 쿼리에 대해 데이터 배열을 만들지 않아도되므로 데이터베이스 연결이 닫힐 수 있도록 코드를 줄일 수있는 클래스가 필요합니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
UPDATE : 아직도 이것에 대해 생각하지만, 지금까지가 가장 좋은 방법은 여전히 DataReader를를 돌려 위해 CommandBehavior.CloseConnection를 사용하고 적() dr.Close를 호출하는 클래스를 사용하는 사람들 신뢰하는 것 같다?
이 제안에 감사드립니다. 이것은 흥미로운 것 같습니다. –