Npgsql
と を使用したクエリがありますPostgres
。クエリを作成するために、Dapper とその SqlBuilder を使用しています。
DBで通常のステートメントを作成すると、正しい結果が返されます。SqlBuilder を介して実行すると、間違った結果が返されます。
別の方法を試しaddTemplate
たり、パラメータを変更したりしましたが、何も変わりませんでした。
また、さまざまな方法で行を変更しようとしましたbuilder.Where("period = @period", new { model.Period });
:
builder.Where("period = @Period", new { model.Period });
builder.Where("period = period", new { model.Period });
builder.Where("period = @TestPeriod", new { TestPeriod = model.Period });
または、これはより一般的な方法ですか:
builder.Where("period = '" + model.Period + "'");
using (NpgsqlConnection con = Helper.GetNpgsqlConnection())
{
var builder = new SqlBuilder();
var selector = builder.AddTemplate("SELECT * FROM szzRecord.folders /**where**/");
if (model.Period != null)
builder.Where("period = @period", new { model.Period });
var result = con.Query(selector.RawSql);
return result;
}
たとえば、通常の SQL クエリの結果は、SELECT * FROM szzRecord.folders WHERE period = 24
251 行を返します。これは正しいです。
dapper クエリの結果は 1223 で、これはすべて行です。そのため、パラメーターが存在しないように見えます。を期待してselector
、 のパラメータを見つけましたperiod
。で見つけましPeriod = 24
たselector.parameters.templates[0]
。これは正しいです?selector.parameters.parameters
空です。