2009-05-21 2 views
4

현재 Entity Framework 문제로 어려움을 겪고 있습니다. 나는 ef 프레임 워크의 꼭대기에 앉아서 프레임 워크에 쿼리를 허용하는 wcf 서비스를 가지고있다. 어떤 시점에서 사용자는 프레임 워크에서 파일을 요청할 수 있습니다. 솔루션 항목에서 파일을 참조하므로 솔루션에서 파일을 요청하면 참조가로드되어 파일 저장소에 액세스 할 수 있습니다.Entity Framework에서 데이터 참조 언로드

모두 제대로 작동하지만 그 이후부터는 해당 솔루션 항목을 반환하는 다른 쿼리를 수행 할 때마다 전체 파일이 반환 결과에 연결됩니다. 결과 항목에 파일 저장소에 대한 언로드 된 참조 만 포함되도록 참조를 분리하거나 언로드하는 방법이 필요합니다.

정보를 검색하기 위해 새 컨텍스트를 만들고 해당 컨텍스트를 쿼리하려고했지만 원래 컨텍스트의 엔티티도 변경되었습니다.

원본 컨텍스트에서 엔터티를 분리하고 새 컨텍스트에서 쿼리를 시도했습니다. 그것도 작동하지 않습니다.

나는 이것을하는 한 가지 방법을 발견했다. 모든 파일 다운로드가 아닌 쿼리의 경우, 결과 엔티티를 분리하고이를 전송합니다. 그래도 이것이 가장 좋은 방법인지는 확신 할 수 없습니다.

누군가가 통찰력을 제공 할 수 있기를 바랍니다. 감사합니다.

+0

WCF 서비스 (자체 호스팅 또는 IIS 호스팅)를 호스팅하는 방법을 명확히하고 파일에 포함 된 솔루션 참조가 의미하는 바를 설명 할 수 있습니다 (파일과 관련된 참조는 어떻게됩니까?). –

+0

사이트가 IIS 호스팅이며 참조가 Entity Framework 때문에 파일과 관련되어 있습니다. 파일은 별도의 테이블에 있지만 외부 키를 통해 정보 테이블에 링크됩니다. 따라서 정보 테이블에서 링크 된 엔터티에 액세스하려면 파일 참조를로드해야합니다. 지연로드가 발생하면 링크를 마운트 해제 할 수 없습니다. – Johannes

+0

모든 파일이 데이터베이스에 있고 파일의 엔티티 유형이 있다는 것을 의미합니까? 그렇다면 엔티티를 분리하려고 시도했다고 말하면 해당 "솔루션"엔티티 또는 파일 엔티티입니까? 후자가 작동해야합니다. – Marcanpilami

답변

0

발생하는 문제는 아마도 변경 추적입니다.이 문제는 기본적으로 사용 설정되어 있습니다.

가능한 해결 방법 : MergeOption.NoTracking

using (MyEntities _context = new MyEntities()) 
{ 
    _context.Widgets.MergeOption = MergeOption.NoTracking; 

    return _context.Widgets.ToList(); 

} 

article

해제 변경 내용 추적 솔루션이 작동하지 않는 경우이 문제를 처리하는 방법에 대한 정확한 방향을 가리 키도록 도움이 될 수 있습니다.

나는 최근에 비슷한 문제로 고심했다. 문제는 내가 사용한 (분명히) 객체에 대한 참조를 유지하는 컨텍스트의 결과입니다. 동일한 유형의 객체를 변경할 때마다 (새로운 컨텍스트로 획득 한 경우에도 마찬가지 임) 객체가 변경되고있었습니다.

동료 중 한 사람의 도움을 받아 IOC 컨테이너 (웹 요청 별 라이프 스타일)에 등록하는 방식으로 문맥이 어슬렁 거리고 있다고 판단했습니다. 라이프 스타일을 일시적으로 변경했을 때 (새로운 인스턴스를 제공 한 경우) 동일한 유형의 객체에 대한 변경 사항은 영향을받지 않았습니다.

희망이 도움이됩니다.

+0

LOL ... 남자 ... 2yrs 전에이 질문을 한 것을 깨닫지 못했습니다!나는 당신이 지금까지이 문제를 해결했다고 확신합니다. =) 바라건대 대답은 다른 누군가에게 도움이되기를 바랍니다. – Rich

+0

감사합니다. 나는 그것을 확실히 시험해 볼 것입니다. 나는 결국 질문에 언급 된 "해결책"에 붙어 있지만 이것은 아주 새로운 것을 가르쳐 줄 것이라고 생각한다. :디 – Johannes

관련 문제