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 = 24251 行を返します。これは正しいです。
dapper クエリの結果は 1223 で、これはすべて行です。そのため、パラメーターが存在しないように見えます。を期待してselector、 のパラメータを見つけましたperiod。で見つけましPeriod = 24たselector.parameters.templates[0]。これは正しいです?selector.parameters.parameters空です。