在一个应用程序中,我目前只有一个指向给定集合的URI。在这个集合上我写了一个存储过程。 proc工作,没有问题,但我需要在.NET应用程序中运行它。
我做了一些挖掘,发现了以下方法:
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;
}
但是,它不起作用,因为我的URI已经指向集合,语句Database db = _documentDbClient.CreateDatabaseQuery().Where(d => d.Id == "XXXX")
失败。
我继续挖掘并发现一个重载,我可以传递存储过程的名称(至少,这就是我的样子),允许我重写代码:
var response = _documentDbClient.ExecuteStoredProcedureAsync<DataOverview>("spGetData", clientId, fromDate, toDate);
if (response != null) { result = response.Response; }
但我仍然没有得到任何结果。我错过了什么/做错了什么?
答案 0 :(得分:0)
我建议在_self
链接上使用UriFactory(以避免额外的网络往返)来构建对存储过程的引用。
试试这个:
var response = _documentDbClient.ExecuteStoredProcedureAsync<DataOverview>(UriFactory.CreateStoredProcedureUri("XXXX", "YYYY", "spGetData")).Result