In einer Anwendung habe ich derzeit nur eine URI, die auf eine bestimmte Sammlung verweist. Auf dieser Sammlung habe ich einen gespeicherten Proc geschrieben. Der Prozess funktioniert, keine Probleme, aber ich muss es aus einer .NET-Anwendung heraus ausführen.Wie führe ich eine gespeicherte Prozedur aus, ausgehend von der URI einer bestimmten Sammlung
habe ich einige graben und fand den folgenden Ansatz:
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;
}
aber es funktioniert nicht, da meine URI zu der Sammlung weist bereits die Aussage Database db = _documentDbClient.CreateDatabaseQuery().Where(d => d.Id == "XXXX")
ausfällt.
Ich fuhr fort zu graben und fand eine Überlastung in dem ich den Namen der gespeicherten proc passieren könnte (zumindest das ist, wie es schien mir), so dass ich den Code neu zu schreiben:
var response = _documentDbClient.ExecuteStoredProcedureAsync<DataOverview>("spGetData", clientId, fromDate, toDate);
if (response != null) { result = response.Response; }
Aber ich bekomme immer noch keine Ergebnisse. Was vermisse ich/mache ich falsch?