Dapper Multiple WHERE IN оператор и ODBC - PullRequest
0 голосов
/ 18 октября 2018

Я использую Dapper, чтобы делать выборочные проверки по базе данных DB2 (с диском ODBC).Когда я включаю одно предложение "WHERE IN", оно работает правильно:

    //Works!
    var p = new DynamicParameters();
    var list = new float[] { 0.35f, 0.36f, 0.37f };            
    p.Add("ids", list);          
    string query = $"select * from {_table} where FIELD1 in ?ids?";
    return WithConnection(c => c.Query<Entity>(query, p));

Однако, если я включаю другое предложение WHERE IN, я не получаю ожидаемый результат:

   //Unexpected result (I should get 2 elements but returns empty)    
    var p = new DynamicParameters();
    var list = new float[] { 0.35f, 0.36f, 0.37f };  
    var list2 = new int[] { 2423634, 2423635, 2423636, 2423637, 2417456 };  
    p.Add("ids", list); 
    p.Add("ids2", list2);         
    string query = $"select * from {_table} where FIELD1 in ?ids? and FIELD2 in ?ids2?";
    return WithConnection(c => c.Query<Entity>(query, p));

Более того, если я использую предложение WHERE IN и простое условие, я получаю ошибку:

        //Error Error: [SQL0302] Data conversion or data mapping error. 
        // Cause . . . . . :   Error type 6 has occurred. Error types and 
        // their meanings are: ... 6 -- Numeric data that is not valid. ...
        var p = new DynamicParameters();
        var list = new float[] { 0.35f, 0.36f, 0.37f };
        int id = 2423634;
        p.Add("ids", list);
        p.Add("id", id);
        string query = $"select * from {_table} where FIELD1 in ?ids? and FIELD2 = ?id?";
        return WithConnection(c => c.Query<Entity>(query, p));

Если я использую условие без WHERE IN, оно работает правильно.

Являюсь ли яделать что-то не так или это может быть ошибка в Dapper?(Я думаю, что была похожая ошибка при использовании предложений WHERE IN, решенных в версии 1.50.2).

Заранее спасибо.

...