1

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 = 24selector.parameters.templates[0]。これは正しいです?selector.parameters.parameters空です。

4

1 に答える 1