2010-03-05 4 views
4

죄송 합니다만, 이것이 중복 된 경우. 이 질문이 사실이라면 적절한 질문을 해주세요. 그러나 제가 찾고있는 것을 정확히 찾을 수 없었습니다.ASP.NET 요청 ... 어떻게 Linq DataContext 함께 할?

그래서 ASP.NET 웹 응용 프로그램에서 엔티티 추적 및 지속성을 위해 SQL datacontext에 Linq를 사용하고 있습니다. 한 번에 많은 사용자가없는 인트라넷 응용 프로그램을위한 것입니다. 지금 당장 나는 세션 상태에서 datacontext를 저장하고있어서 더럽다고 느끼고있다. 수정중인 엔티티에 변경 내용 추적을 유지해야하기 때문에 항상 컨텍스트가 필요합니다. 우리의 모든 스크린에는 Save 버튼이 있습니다. Save 버튼은 DataContext에서 SubmitChanges()를 호출하고 보류중인 모든 변경 사항을 메모리에 유지합니다.

DataContext를 저장해야합니까? 각 요청이 끝날 때 그 요청을 처리하고 어떻게 든 다시 생성하고 보류중인 변경 사항을 가져와야합니까? 매번 다시 작성해야한다면, 각 요청마다 중복되는 데이터베이스 적중이없이 상황이 어떻게 바뀌 었는지 알 수있는 방법을 이해하지 못합니다.

답변

4

먼저 세션에 모든 것을 넣지 않으려 고합니다. 특히 사용자가 많지 않은 경우 필요할 때 데이터를로드하십시오.

데이터 컨텍스트를 전혀 저장하지 마십시오. 필요한 경우 각 페이지에 새 페이지를 만드십시오. 저장 단추를 누르면 데이터 컨텍스트를 다시 작성하고 데이터베이스에서 개체를로드 한 다음 양식 입력을 기반으로 필요한 변경을 수행 한 다음 다시 데이터베이스에 저장합니다. 각 객체에 대해 두 개의 데이터베이스 히트가 있어야합니다. 하나는로드하고 하나는 다시 저장해야합니다.

+0

나는 당신과 TV에 정확한 답을 모두주고 싶다. 체크 박스는 ... 처음이었다. –

3

데이터 컨텍스트의 최적의 방법은 작업 단위 (UOW) 패턴의 범위가 서비스중인 단일 요청임을 나타냅니다. 변경해야 할 때마다 새 데이터 컨텍스트를 인스턴스화하십시오. 이전 페이지를 그린 후에 변경된 내용을 덮어 쓰는 것이 걱정된다면, 숨겨진 필드에서 버전/타임 스탬프를 사용하고 유지하고 업데이트 할 엔티티를 검색 할 때 데이터 컨텍스트에서 반환 된 버전/타임 스탬프를 확인하십시오.

+0

작업 단위 패턴을 완전히 이해하지 못했을 수도 있지만, 추가, 업데이트 및 삭제 된 모든 항목을 고수하고 추적해야하는 요지가 아닙니까? 그렇다면 DataContext를 수행 할 때마다 변경 작업을 수행 할 때마다이를 다시 작성하는 방법은 무엇입니까? –

+0

웹 요청 컨텍스트에서 작업 단위 (UOW)는 스팬 요청이 아닌 단일 요청에 적용됩니다. 요청에 대한 데이터를 얻고 변경/삽입/삭제를 수행하여 요청을 처리 한 다음 컨텍스트를 삭제합니다. 나는 내 대답을 분명히 할 것이다. – tvanfosson

+0

작업 단위 (UOW)는 트랜잭션과 같습니다. 작업 단위를 작성하고, 사용중인 저장소에 대한 참조를 전달한 다음, 완료되면 적절한 "Commit"을 호출하십시오. Linq2SQL은 모든 변경 사항을 추적하므로 기본적으로 개념을 지원합니다 ... – TobyEvans

관련 문제