2010-01-21 5 views
1

ASP.Net 웹 폼 앱에서 일하고 있는데 얼마나 오래 데이터 컨텍스트를 유지해야하는지 궁금합니다. 현재 각 페이지로드시 컨텍스트를 작성하고 해당 컨텍스트는 전체 페이지로드에 대한 모든 db 액세스에서 사용됩니다. 필요로하는 각 메소드에서만 컨텍스트를 사용해야하고 메소드의 끝에서 처리해야합니까? 해당 컨텍스트의 사용 블록을 끝내면 컨텍스트에서 검색된 개체에 액세스 할 수 없다는 것을 이해합니다. 그러나 이것은 내 디자인의 문제가 아닙니다.LINQ DataContext를 얼마나 오래 보관해야합니까? ASP.Net 페이지

답변

2

필자는 필요할 때까지 컨텍스트를 유지한다고 말하고 싶습니다. 상황의 수명과 요청 횟수 사이에는 균형이 있어야합니다.

데이터베이스에 대한 모든 요청과 함께 컨텍스트를 만들지 않으려는 것처럼 응용 프로그램의 전체 수명 (가능한 경우)에 대한 컨텍스트를 유지하기를 원하지 않을 것입니다.

코드가 수행하는 효과적인 트랜잭션을 살펴보고 각 트랜잭션 내에서 컨텍스트를 유지하려고합니다. 이 세분성은 코드가 모듈화되고 확장 가능하도록 보장하는 데 도움이됩니다 (종속성이 적어야 함).

1

나는 HTTP 요청을 기반으로 바인딩되고 파괴 된 다른 방법뿐만 아니라 설명 된 방식대로했습니다. 즉, 단일 페이지에서 시작부터 끝까지 하나의 DataContext를 사용할 수 있습니다.

전반적으로 현재 수행중인 방식대로 성능에 큰 타격을 입지 않았습니다.

3

스티브 샌더슨 (저자 : Pro ASP.NET MVC Framework)은이 문제에 대해 흥미로운 blog post을 가지고 있습니다. DataContext는 기본적으로 "요청"과 관련이있는 "작업 단위 (UOW)"별로 유지되어야한다는 것이 요지입니다. 개체를 수정하지 않고 DB에 변경 사항을 지속 (업데이트) 할 필요가 없다면 수명이 짧아 질 수 있습니다.

여기에서 'When should I dispose of a data context?'을 확인하실 수 있습니다.

관련 문제