2016-04-13 4 views
0

アプリケーションでは、現在、指定されたコレクションを指すURIのみがあります。このコレクションで私はストアドプロシージャを書いた。 procは動作しますが、問題はありませんが、.NETアプリケーション内から実行する必要があります。 特定のコレクションのURIから始まるストアドプロシージャを実行するにはどうすればいいですか?

は、私はいくつかの掘削を行なったし、次のようなアプローチが見つかりました:私のURIが既に声明 Database db = _documentDbClient.CreateDatabaseQuery().Where(d => d.Id == "XXXX")が失敗したコレクションを指しているので

public DataOverview GeneralOverviewByClient(int clientId, DateTime? fromDate = null, DateTime? toDate = null) 
    { 
     DataOverview result = null; 

     // Get a Database by querying for it by id 
     Database db = _documentDbClient.CreateDatabaseQuery().Where(d => d.Id == "XXXX") 
                  .AsEnumerable() 
                  .Single(); 

     // Use that Database's SelfLink to query for a DocumentCollection by id 
     DocumentCollection collection = _documentDbClient.CreateDocumentCollectionQuery(db.SelfLink).Where(c => c.Id == "YYYY") 
                            .AsEnumerable() 
                            .Single(); 

     StoredProcedure storedProcedure = _documentDbClient.CreateStoredProcedureQuery(new Uri(collection.StoredProceduresLink)).Where(p => p.Id == "spGetData") 
                                   .AsEnumerable() 
                                   .FirstOrDefault(); 

     if (storedProcedure != null) 
     { 
      var response = _documentDbClient.ExecuteStoredProcedureAsync<DataOverview >(storedProcedure.SelfLink, clientId, fromDate, toDate); 
      result = response.Result; 
     } 

     return result; 
    } 

しかし、それは、動作しませんが。

私は私がにコードを書き換えることができ、(少なくとも、それはそれは私には思えた方法です)掘り続け、私はストアドプロシージャの名前を渡すことができたに過負荷が見つかりました:

var response = _documentDbClient.ExecuteStoredProcedureAsync<DataOverview>("spGetData", clientId, fromDate, toDate); 
if (response != null) { result = response.Response; } 

しかし、私はまだ結果が得られていません。私は何が間違っている/間違っていますか?

答えて

0

_self以上のリンクを使用して(追加のネットワークラウンドトリップを避けるため)、ストアドプロシージャへの参照を作成することをおすすめします。

これを試してみてください:

var response = _documentDbClient.ExecuteStoredProcedureAsync<DataOverview>(UriFactory.CreateStoredProcedureUri("XXXX", "YYYY", "spGetData")).Result 
関連する問題