2016-04-27 16 views
0

アプリケーションの場合、.NETのDocumentDbでクエリを実行しています。このために私はこのようなパラメータ化クエリを、使用していた使用:パラメータ化されたクエリを使用して.NETでDocumentDbを照会する

var sqlString = "select p.Id, p.ActionType, p.Type, p.Region, a.TimeStamp, a.Action from History p join a in p.Actions where a.TimeStamp >= @StartTime and a.TimeStamp <= @EndTime and p.ClientId = @ClientId and p.ActionType = @ActionType"; 
if (actionType != "") { sqlString += actionTypeFilter; } 

var queryObject = new SqlQuerySpec 
{ 
    QueryText = sqlString, 
    Parameters = new SqlParameterCollection() 
    { 
     new SqlParameter("@StartTime", startDate), 
     new SqlParameter("@EndTime", endDate), 
     new SqlParameter("@ClientId", clientId.ToString()), 
     new SqlParameter("@ActionType", actionType) 
    }, 
}; 

var dataListing = _documentDbClient.CreateDocumentQuery<PnrTransaction>(UriToPnrHistories, queryObject, new FeedOptions() { MaxItemCount = 1 }); 

私はこれを実行すると、私は空のデータセットエン取得しています。しかし、私は同じクエリを使用し、古典的な文字列を使用してそれを構築するだけで正常に動作します。

私のパラメータ化されたクエリで何が間違っているのか教えていただけますか?

答えて

0

上記のコードが実行中のコードの場合でも、パラメータ化されたSQL文字列にactiontypeFilterを追加します。 2行目のif文を削除してみてください。あなたの問題かもしれないと私には思われます。

サンプル文書をサーバーから投稿することができれば助かります。

+0

投稿の明確化のコメントは、質問の下での回答ではなく、 –

+1

"コメントするには50の評判が必要です" "...それに取り組んでいます。 – hsulriksen

0

私は通常、この構文を参照してください。

SqlParameterCollection parameters = new SqlParameterCollection(); 
parameters.Add(...); 
parameters.Add(...); 

はそれを試してみて、あなたは異なる結果を得るかどうかを確認します。あなたの答えでそれを初期化するために使用するリストは、動作するために違った形で入力する必要があるかもしれません。

関連する問題