2012-05-18 1 views
4

PetaPoco를 사용하면 Database 클래스를 어떻게 처리해야합니까? 내 응용 프로그램은 아마도 쿼리를 캡슐화하기 위해 다양한 리포지토리 (꽤 DDD 리포지토리가 아닌 게이트웨이 리포지토리와 같은)를 사용하게 될 것입니다.요청마다 또는 필요할 때마다 PetaPoco 데이터베이스 클래스를 생성해야합니까?

동일한 데이터베이스 연결에 액세스해야하는 여러 저장소가 있으므로 생성자에서 Database 클래스를 만든 기본 클래스를 만들고 해당 소멸자에서 Dispose을 호출하고이 개체를 모두 호출하면됩니다. 파생 된 클래스, 그래서 나는이 시나리오에서 사용하는 블록이 필요하지 않을 것입니다 (클래스가 범위를 벗어나면 데이터베이스 자체를 닫을 것이기 때문에).

또한 global.axax에서 Application_BeginRequest 메서드의 데이터베이스 개체를 만드는 것으로 간주되어 모든 페이지에서 사용할 수 있지만 완전히 작동하지는 않습니다. (DatabaseManager 일종의 필요하다고 생각합니다. 클래스를 인스턴스화하는 클래스? NHibernate 및 RavenDB 같은 것들과 함께 사용 된이 접근법 만 보았습니다.) 이것은 저장소 객체/데이터 레이어 클래스를 통해 대신 냄새가 나는 것처럼 ASPX 페이지 자체에 데이터베이스 객체의 사용을 밀어 넣는 것처럼 보입니다.

이러한 접근 방법 중 어떤 것이 가장 효과적일까요? 나는 또한 PetaPoco가 "공유 연결"을 지원한다는 것을 보았습니다. 그래서 데이터베이스에 대한 열린 연결의 수를 최소화하기 위해보고 싶습니다.

답변

4

일반적으로 요청 당 Database을 만듭니다. 가벼운 객체입니다. ActionFilter에서 Controller 기본 클래스를 사용하십시오.