2010-12-02 3 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と修正とデータサービスを使用して今すぐコード

崩壊

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; 

でのcreateContext

をオーバーライドされたときにこれが起こることがわかっていますエラーは消えましたが、次のメッセージが表示されます: Object mapping could not be found for Type with identity 'ClientDataStoreEntities.Data'. このエラーは、createcontextの.toTraceStringで発生します

SSDLファイルには、定義された型

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

だから、それは私がモデルから生成したSTEライブラリの名前空間とタイプであるClientDataStoreEntities.Dataタイプをロードする必要があり 崩壊を持っています。

EDIT

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

では、しかし、今のサービスは、私が呼び出すことができる任意のメソッドを持っていない、すべてのタイプをロードするように見えるん。

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

は私が得るものです: は2データセットとPublishedDataSetが、そこにする必要があります。

答えて

0

私は同じ問題(あなたが言及した最初のもの)に遭遇しました。私はこのスレッドでJulie Lermanの提案を使用して作業しました。他の提案は私のためにはうまくいかなかったが、Julieのソリューションはすべてのクエリに対して実行されているため(そしてある程度のコストがかかる)、パフォーマンスに影響を与える可能性があるので、私はそれらをさらに試してみるだろう。

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

編集:申し訳ありませんが、ちょうどあなたがこのスレッドで述べた他のソリューションを活用し実現。

関連する問題