C# を使用して、 OData を使用して型指定されていないカスタム データ サービス プロバイダーを生成しています。
必要なすべてのプロバイダーとインターフェースを実装しました。
すべてのエンティティは、メタ データの作成時にのみ動的に指定されます。
EDMX または Reflection プロバイダーは使用できません。
すべてのアクセス権が提供されます。
1) カスタムメタデータプロバイダー
public bool TryResolveResourceType(string name, out ResourceType resourceType)
{
return this.resourceTypes.TryGetValue(name, out resourceType);
}
public bool TryResolveServiceOperation(string name, out ServiceOperation serviceOperation)
{
if (serviceOperations.TryGetValue(name, out serviceOperation))
{
serviceOperation.SetReadOnly();
return true;
}
else
{
serviceOperation = null;
return false;
}
}
2) カスタムデータクエリプロバイダー
public object InvokeServiceOperation(ServiceOperation serviceOperation, object[] parameters)
{
//Invoke the method present in ServiceOperation
}
次の URL
http://localhost/SampleService.svc/TestEntity(1)/Id>
を指定すると、id 値を取得できます。
URL
http:// localhost/SampleService.svc/TestServiceOperation
を使用してサービスを呼び出すと、サービス操作を呼び出すことができます。
しかし、Serv.Op. エンティティを指定した後、エラー
http://localhost/SampleService.svc/TestEntity/TestServiceOperationが発生します
この URL を使用すると、対応する TestEntityResourceSet が検出され
、name=TestServiceOperation のリソース タイプが検出されます。
ただし、TestServiceOperation にはリソース タイプはありません。対応する SO 名を使用して、TryResolveServiceOperation で検索する必要があります。
ネットで検索されたすべての例は、Ser.Op を呼び出すようなものでした。.svc/SO タイプの後のみ。
エンティティごとに個別にサービス操作を呼び出す必要があります。お気に入り
http:// localhostTest.svc/Entity1/SerOp1 http:// localhostTest.svc/Entity2/SerOp2
これを行う方法の良い例はありますか? ありがとう。