首页 > 解决方案 > 如何使用 Dapper 库发送 DTO 中未包含的参数

问题描述

下面的代码会引发错误,因为 sql 脚本需要storeId但它不是 DTO 的一部分。storeId 可从调用函数获得,但我不知道如何以干净的方式将其传递给 dapper。

是否有任何精巧的巫术可以让我将此值与列表一起传递,而无需更改模型或重新映射所有 DTO 属性以包含 storeId?

    public void UpsertOrders(int storeId, string location, IEnumerable<OrdersListing> listings, ILogger logger)
    {
        using (var connection = new SqlConnection(connectionString))
        {
            var sql = File.ReadAllText(@".\scripts\UpsertOrders.sql");
            connection.Execute(sql, listings);
        }
    }

标签: parametersmappingienumerabledapperexecute

解决方案


未经测试,但也许:

connection.Execute(sql, listings.Select(x => {
    var args = new DynamicParameters(x);
    args.Add("storeId", storeId);
    return args;
});

推荐阅读