簡単な問題があります。
Visual Studio 2013でWCF Data Service 5.6を作成し、その*.svc.cs
ファイル、変更された行
public class CustomdataService : DataService< /* TODO: put your data source class name here */ >
エンティティを接続する
public class CustomdataService : DataService< SchedulerEntities >
しかし、ブラウザでサービスを表示したい場合、次のエラーが表示されます
リクエストエラー
サーバーで要求の処理中にエラーが発生しました。詳細については、サーバーログを参照してください。
エンティティフレームワークは1つのテーブルにすぎません...
Entity Framework 6とWCF Data Services 5.6.0では、連携するためにプロバイダーが必要なようです。詳細については、 Entity Framework 6+でのWCF Data Services 5.6.0の使用 を参照してください。
NuGet Package Console Managerを使用するだけで、プロバイダーをダウンロードできます。
Install-Package Microsoft.OData.EntityFrameworkProvider -Pre
バージョンはアルファ2なので、将来的には最終リリースを検索してください。しかし、私にとってはうまくいきました。
最後に、DataService<T>
を使用する代わりに、EntityFrameworkDataService<T>
を使用する必要があります。 T
は、エンティティの名前です。
実際のエラーは異なる場合があります。私の場合、AdventureWorks2012データベースを起動すると、同じ一般的なエラーメッセージが表示されました。
したがって、実際の問題は、 here で説明されているように、サービスクラスに属性を追加することで確認できます。
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class WcfDataServiceAW : EntityFrameworkDataService<AdventureWorks2012Entities> { ... }
それが誰かを助けることを願っています。
PS。私のエラーは:
例外メッセージは、「タイプ 'Address'のプロパティ 'SpatialLocation'は、タイプ 'Geography'であり、サポートされているプリミティブ型ではありません。」です。
この投稿 によると、CustomdataService
の継承型を変更する必要があります。
DataServiceの基本タイプを置き換えます。 EF 5以下の場合、データサービスはDataServiceから継承する必要があります。TはDbContextまたはObjectContextです。 EF 6以降の場合、データサービスはTがDbContextであるEntityFrameworkDataServiceから継承する必要があります。詳細については、下記のDataServiceとEntityFrameworkDataServiceの違いをご覧ください。
edmxに移動し、図で、必要なテーブルが1つだけ残るまですべてのテーブルを削除します。その後、すべてのテーブルを保持することはできません。これは私が見つけたものです。
KTウォン