2011-08-15 1 views
0

SqlConnection을 사용하는 경우 가장 좋은 방법은 가능한 빨리 처리하고 연결 풀링에서 세부 정보를 처리하도록하는 것입니다. System.Data.Linq.DataContext를 사용할 때 같은 패턴을 따라야합니까?더 나은 방법은 System.Data.Linq.DataContext 컨텍스트를 재사용하거나 가능한 빨리 처리하는 것입니다.

내 컨텍스트를 한 번 만들어 내 메서드에 전달해야합니까, 아니면 구성 파일에서 연결 문자열을 가져 와서 여러 번 컨텍스트를 만들고 매개 변수 전달시 저장해야합니까?

편집 : 신원지도에 대한 유용한 링크 : Architecting LINQ To SQL Applications, part 7

답변

2

에서만만큼 필요한 작업을 수행 할 주위에 데이터 컨텍스트를 유지해야합니다.

이유는 아이덴티티 맵이라는 것을 사용하기 때문에 고객 1을 선택할 때마다 동일한 개체가 다시 반환된다는 것입니다. 이것은 많은 참고 자료를 보유하고 있으며 시간이 지남에 따라 더 많은 메모리를 소비하게 될 것이고 이러한 결과는 점차 사라질 것입니다.

웹 응용 프로그램의 경우 요청 당 하나를 만드는 것이 일반적이며 DataContext 클래스는 빠른 생성을 위해 최적화되어 있습니다.

+0

+1 "운영"의 정의가 (불행히도 필연적으로) 개발자에게 상당히 많이 남겨져 있다는 점에 유의해야합니다. 실용적인 목적으로 "작업"은 WinForms 또는 WPF와 같은 리치 클라이언트의 경우 상당한 시간이 걸릴 수 있으며 상당한 사용자 상호 작용이 필요합니다. –

+0

저는 개인적으로 사용자 상호 작용 지연을 데이터 컨텍스트의 수명주기와 관련시키지 않을 것입니다.하지만 이러한 경로는 많은 추가 작업을 필요로합니다. – DamienG

+0

사용자가 레코드를 편집하는 중일 때, 그 일을 할 때 얻을 수있는 이점이 확실하지 않은 것 같습니다. 검색 및 저장 작업에 대해 서로 다른 컨텍스트를 구체화하더라도 여전히 부실 데이터를 처리해야합니다. 이제는 두통이 있고 거의 강하지 않은 STE와 같은 것으로 이동하지 않는 한 컨텍스트에서 제공하는 추적 기능을 잃어버린 것입니다. –

관련 문제