すべての条件を含むオブジェクトのToJson()
を介してdbにクエリ条件を格納しています。簡略化した例は次のようになります。ServiceStack Ormlite In Clauseの配列を逆シリアル化する
{"FirstName" :[ {Operator: "=", Value: "John"}, { Operator: "in", Value:" ["Smith", "Jones"]"}], "SomeId": [Operator: "in", Value: "[1,2,3]" }]}
リストは、文字列、整数、小数または日付のいずれかです。これらはすべて同じクラス/テーブルにマップされるので、リフレクションによって容易にFirstName
またはSomeId
のタイプを得ることができます。
私は、この情報に基づいて、where句を作成しようとしています:
if (critKey.Operator == "in")
{
wb.Values.Add(keySave + i, (object)ConvertList<Members>(key,
(string)critKey.Value));
wb.WhereClause = wb.WhereClause + " And {0} {1} (@{2})".Fmt(critKey.Column,
critKey.Operator, keySave + i);
}
else
{
wb.Values.Add(keySave + i, (object)critKey.Value);
wb.WhereClause = wb.WhereClause + " And {0} {1} @{2}".Fmt(critKey.Column, critKey.Operator, keySave + i);
}
それはこのような何かを生成(私のテストの例を、はい、私はstorenumber部分は愚かなことを知っている):
Email = @Email0 And StoreNumber = @StoreNumber0 And StoreNumber in (@StoreNumber1)
私はリストに問題があります。これを手作業で行うのではなく、オルタイトツールでこれを行う良い方法はありますか? where節は、リストを扱うときを除いて、罰金を出します。私はそれを一般的なものにしようとしていますが、その部分には苦労しています。
2番目の質問が関連している可能性がありますが、in
でパラメータを使用する方法がわかりません。 NPocoから来て(colum in @0
、somearrayを実行できます) `しかし、私はできません 'はSql.Inを使用せずにこれを行う方法を見つけるようです。リストを扱う場合
私の場合は型付きAPIを使用できません – lucuma