C#에서 데이터베이스에 쿼리를 수행하려고 할 때 DBQuerier()
이라는 새 인스턴스를 만들고 Run()
메서드를 호출합니다.참조없이 데이터 지속
DBQuerier
은 실행 방법에 전달되는 항목에 따라 여러 데이터베이스 중 하나에 연결할 수 있습니다 (예 : new DBQuerier().Run(DBEnum.CatDatabase)
).
DBQuerier
은 다양한 솔루션으로 라이브러리의 일부입니다.
모든 연결을 메모리에로드하고 열거 형 조회에 사용하도록로드하고 구문 분석 할 수있는 구성 파일이 있습니다. 그러나 나는이 정보를 유지하는 방법을 확신하지 못한다. 그것은 의존성 주입을위한 작업과 같습니다
new DBQuerier(new MyConnectionStringLoader()).Run(...)
그러나 나는 그것이 파일을로드하고 DB를 쿼리가이 방법으로 실행되는 매 시간 구문 분석하고 싶지 않아요. 이 개체는 매번 생성되고 폐기되므로 DBQuerier 내에 저장할 수 없습니다.
정적 인 경우 ConnectionStringManager 클래스를 만들면 종속성에 MyConnectionStringLoader를 삽입 할 수 없으며 단위 테스트를 어렵게 만듭니다. 만약 내가 그것을 싱글 톤으로 만들면 비슷한 문제가 생길 것이다.
이 문제에 대한 좋은 해결책이 있습니까? 그것이 정적 인 수업이나 싱글 톤을 사용하지 않는다고 말하는 무수한 게시물이 나왔다. 그래서 나는 꽤 붙어있다.
결코 절대로 말하지 마십시오! 나는 싱글 톤 (singleton)과 스태틱 (static)은 그런 경우에는 괜찮다고 말한다. 그렇다면 왜 ConnectionString과 같은 추가 정보가 들어있는 DBQuerier에 대한 클래스를 만들지 않습니까? – Mono