2010-12-02 4 views
2

생성 된 컨텍스트가있는 EDMX 모델이 있습니다. 이제 셀프 추적 엔티티 라이브러리가 별도의 프로젝트로 생성되었으며 EDMX 모델에서이를 참조했습니다. 컨텍스트에서 올바른 네임 스페이스를 엔터티와 동일한 네임 스페이스로 설정하십시오.WCF DataService EF 엔터티를 찾을 수 없습니다.

이제는이 컨텍스트를 사용하여 WCF 데이터 서비스를 만들려고 할 때를 제외하고이 모든 작업을 수행합니다.

그래서 그냥 새로운 ObjectContext를 만들고 그걸로 작업하면 잘 작동합니다.

그러나

서버가 요청을 처리하는 동안 오류가 발생 서비스를로드 할 때 나는 다음과 같은 오류가 lib에는 상황에 맞는 + 모델 LIB 및 엔티티를 참조하는 데. 예외 메시지는

'Value cannot be null. Parameter name: key'. See server logs for more details. The exception stack trace is: 지금 내가이 외부 엔티티 LIB 및 수정과 데이터 서비스를 사용할 때 발생할 수있는 createContext의를 재정의하는 것을 발견

축소

System.Data.Metadata.Edm.ItemCollection itemCollection; 
     if (!context.MetadataWorkspace.TryGetItemCollection 
       (System.Data.Metadata.Edm.DataSpace.CSSpace, out itemCollection)) 
     { 
      var tracestring = context.CreateQuery<ClientDataStoreContainer>("ClientDataStoreContainer.DataSet").ToTraceString(); 
     } 
     return context; 

이제 코드

오류가 사라졌지만 나는 다음 하나를 얻습니다 : Object mapping could not be found for Type with identity 'ClientDataStoreEntities.Data'. 이 오류는 .toTraceString에서 발생합니다 createcontext

SSDL 파일에 정의 된 유형

<EntitySetMapping Name="DataSet"> 
    <EntityTypeMapping TypeName="IsTypeOf(ClientDataStoreEntities.Data)"> 

이 그래서 내가 모델에서 생성 한 STE 라이브러리의 네임 스페이스와 유형 인 ClientDataStoreEntities.Data 유형을로드 할 수있다 축소가 있습니다.

편집 :

var tracestring = context.CreateQuery<Data>("ClientDataStoreContainer.DataSet").ToTraceString(); 

와 함께 그러나 이제 서비스는 내가 호출 할 수있는 방법이없는, 모든 종류의로드 보인다. 이 데이터 집합 및 PublishedDataSet하지만이 있어야한다 :

<service xml:base="http://localhost:1377/WcfDataService1.svc/"> 
− 
<workspace> 
<atom:title>Default</atom:title> 
</workspace> 
</service> 

내가 무엇을 얻을 수 있습니다.

답변

0

같은 문제 (처음 언급 한 문제)가 발생했습니다. Julie Lerman의 제안을이 스레드에서 사용하여 해결했습니다. Julie의 솔루션은 모든 쿼리에 대해 실행 되었기 때문에 성능에 영향을 미칠 수 있기 때문에 다른 제안은 저에게 효과적이지 못합니다.

MSDN Fail to work with POCO ModelContainer which entities are located in other assembly

편집 : 죄송합니다, 당신이 스레드에서 언급 된 다른 솔루션을 활용 깨달았다.

관련 문제