如何使用Dapper库发送DTO中未包含的参数

时间:2018-07-12 21:17:09

标签: parameters mapping ienumerable dapper execute

以下代码引发错误,因为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);
        }
    }

1 个答案:

答案 0 :(得分:2)

未经测试,但也许:

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