2010-02-08 3 views
6

캐쉬에 Entity Framework의 ObjectContext 개체를 캐시하는 것이 현명한 방법인지 궁금합니다. 이 문제는 사용자가 여러 가지 문제를 동시에 경험할 수있는 여러 연결 문제를 제공합니까?ADO.NET 엔터티 프레임 워크 ObjectContext - 캐싱 질문

'연결이 현재 닫혔습니다'라는 오류가 발생했습니다. 여러 사용자가 ObjectContext를 캐싱했는지 또는 여러 번 새로 고침을하거나 페이지를 중지하고 빠르게 작업하는 것과 관련이 있는지 궁금해졌습니다. else (오류가 발생하기 위해 수행 한 작업)

+0

만 정보를 읽을 마십시오 당신은뿐만 아니라 저장 방법을 사용하고 있습니까? – Zyphrax

+0

나는 그것으로 읽고 쓸 수있다. –

답변

5

나는 그것을 권하지 않습니다. ObjectContext는 액티브하게 동작하고있는 모든 엔티티의 변경을 감시 할 필요가 있습니다. 또는 ObjectContext를 캐쉬하기 전에 액티브 한 엔티티를 절단 할 필요가 있습니다.

활성 엔터티가없는 경우 ObjectContext를 캐시 할 필요가 없습니다. 연결이 끊긴 엔터티로 작업하는 EFv1에서 문제가 많았으므로 캐싱을하지 않거나 관리가 쉬운 엔터티 (자체 추적 엔터티, POCO 엔터티 등)를 허용하는 Entity Framework v4를 기다리는 중입니다.

그냥 마지막 점 하나를 추가한다고 생각하면 여러 스레드가 문제가 될 수 있습니다. 변경 사항을 적용하면 ObjectContext에서 추적 한 모든 변경 내용을 커밋하려고 시도합니다. 여러 사용자가 하나의 컨텍스트를 공유하는 경우 ... 음, 잘하면 문제를 볼 수 있습니다 ..

+0

감사합니다. 컨텍스트 캐싱없이 쿼리에서 반환 된 엔터티를 분리하는 것이 좋습니다? –

+0

또한 현재 요청에 대해서만 저장하는 HttpContext.Current.Items 컬렉션을 사용하면 어떻습니까? 나는 그것이 사용자간에 전 세계적인지 확실하지 않지만 또 다른 비슷한 관심사입니까? 감사. –

+0

늦게 답장을 드려 죄송합니다. 현재 진행 중입니다. 원래의 컨텍스트가 적절히 처리되면 분리가 작동 할 수 있습니다. – RobS

관련 문제