【问题标题】:how add list, string and int into dapper select query如何将列表、字符串和 int 添加到 dapper 选择查询中
【发布时间】:2020-10-06 01:15:11
【问题描述】:

在方法的输入,我有一个模型,它由 { “ID”: [ “细绳” ], “状态”:“字符串”, “系统状态”:“字符串” } 我在 ssms 中检查了请求并且它有效,但是在调试此方法时我看到了不同的结果。 dapper 取第一个 id 并返回 1 个用户,但在 sql studio 中返回 6 个人

public async Task<IEnumerable<User>> FindUser(Users model)
        {
            DynamicParameters parameters = new DynamicParameters();
            parameters.Add("@Id", model.Id);
            parameters.Add("@Status", model.Status);
            parameters.Add("@systemStatus", model.SystemStatus);

            IEnumerable<User> items = null;

            var sql = @"SELECT statusesid FROM userstatuses WHERE [id] IN (@Id) 
                                          AND [status] in (@Status) and [systemStatus] in (@systemStatus)";
            try
            {
                using (var db = new SqlConnection(connectionString))
                {
                    if (db.State != ConnectionState.Open)
                        await db.OpenAsync();

                    items = await db.QueryAsync<User>(sql, parameters);
                }
            }
            catch (Exception e)
            {
                _logger.Error(e);
            }
            return items;
        }

我尝试使用 string.Join(",", model.Id) 但结果相同(如何正确地将列表、字符串和 int 添加到 dapper 选择查询中

【问题讨论】:

    标签: .net .net-core orm dapper


    【解决方案1】:

    Dapper 以不同的方式解释 sql “in”。查看以下 in sql 运算符的转换并尝试相应地调整您的更改:

    Sql 查询:

    SELECT * FROM TableA WHERE id IN (commaSeparatedlistOfIDs)
    

    上述查询的Dapper转换:

    string sql = "SELECT * FROM TableA WHERE id IN @ids"
    var results = conn.Query(sql, new { ids = new[] { 1, 2, 3, 4, 5 }});
    

    【讨论】:

      【解决方案2】:

      如果你在 sql 中有列表,你只需要写 "SELECT * FROM TableA WHERE id IN @ids" 不带括号,dapper 会独立地把它们放下

      【讨论】:

        猜你喜欢
        • 2020-01-02
        • 1970-01-01
        • 1970-01-01
        • 2019-04-02
        • 1970-01-01
        • 2012-10-06
        • 2022-06-12
        • 2016-07-03
        • 1970-01-01
        相关资源
        最近更新 更多