2013-09-02 3 views
0

저는 항상 db 연결을 싱글 톤으로 사용했습니다. 더 빠르고 더 적은 리소스를 사용한다고 생각했습니다.Db 연결은 싱글 톤 과잉입니까?

내 ASP.NET MVC 프로젝트에는 종속성 주입 또는 다른 방법을 통해 내 컨트롤러에 전달되는 EntityFramework Context 인스턴스가 하나 있습니다.

그러나 이것도 가치가 있거나 심지어 데이터베이스 컨텍스트 singelton을 가질 필요가 있습니다. 예를 들어 하나 이상의 액션 필터에 내 컨텍스트의 인스턴스가 있고 내 컨트롤러에 하나 이상의 컨텍스트 인스턴스가있는 경우에도 동일합니다 ?

편집 : 싱글 톤이라고 할 때, 요청 당 싱글 톤을 의미합니다.

+2

데이터 컨텍스트에 싱글 톤을 사용하지 마십시오. http://stackoverflow.com/a/6507820/1043198 –

+1

왜 싱글 톤이 여기 고려 될 수 있습니까? "작업 단위"를 살펴보십시오. –

답변

3

결코 이 아니어야합니다.은 데이터베이스 연결 및/또는 데이터 컨텍스트에 대해 싱글 톤을가집니다.

이것은 동시 환경 (asp.net)에서 작동하지 않을뿐만 아니라 엔티티의 내부 맵을 유지하는 컨텍스트의 단일 인스턴스가 조만간 충돌로 이어지는 메모리 양을 더 많이 차지합니다 큰 데이터베이스로 작업 할 때.

그러나 반대로 - 어디서나 새로운 인스턴스가 있음 - 또한 낭비입니다. asp.net에서 또 다른 평생 정책이 가장 적합합니다 : "http 문맥 당"평생 정책. 이 정책에 따라 각 단일 요청마다 하나의 데이터 컨텍스트 인스턴스를 만들고 요청이 완료되는 한 데이터 컨텍스트를 삭제합니다.

+0

"요청이 완료됨에 따라"라는 절이 아니라 가능한 한 빨리 데이터 컨텍스트를 _ 항상 처분한다고 말하고 싶습니다. 요청은 기술적으로 항상 완료되어야하지만 데이터 컨텍스트 처리는 관련이없는 개념에 의존해서는 안됩니다. –

+0

@WiktorZychla, 첫 싱글 포스트에 추가하는 것을 잊어 버렸습니다. 싱글 톤이라고 말할 때, 싱글 톤 요청을 의미합니다. – Androme