生成されたコンテキストを持つ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が、そこにする必要があります。