gpt4 book ai didi

sql-server - Dapper 是否使用编号参数,例如 Massive

转载 作者:行者123 更新时间:2023-12-04 05:02:16 24 4
gpt4 key购买 nike

与命名的 (@a, @b, ...) 不同,Dapper 是否使用诸如 Massive(@0, @1, ...) 之类的编号参数?

有必要创建一个查询作为

//select @0 as val union select @1 union select @2 union select @3 union select @4 
//union select @5 union select @6 union select @7 union select @8 union select @9
var sb = new StringBuilder("select @0 as val");
for (int i = 1; i < 10; i++)
{
sb.AppendFormat(" union select @{0}", i);
}
var query = sb.ToString();
//---Dapper = fail
var db = Connection;
var list = db.Query(query, param: new object[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
//---Massive = ok
var db2 = new Massive.DynamicModel(coins);
var list2 = db2.Query(query, args: new object[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });

Dapper 的问题有哪些解决方案?

最佳答案

Massive 在查询中使用位置参数,但 dapper 使用命名参数。因此,您可以大量传入参数数组,例如:new int[] {1,2,3}而在 dapper 中,您需要传入参数对象,例如 new { a = 1, b = 2 } .

要使用 dapper 实现类似的解决方案,您可以创建一个 DynamicParameters您可以在其中传递参数字典的对象,其中键是参数的名称,值是参数的值,例如 {"0",0}, {"1", 1},

您可以使用 LINQ 轻松将数组转换为字典:

var dictionary = new object[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
.Select((item, ind) => new {ind = ind.ToString(), item})
.ToDictionary(item => item.ind, item => item.item);

DynamicParameters p = new DynamicParameters(dictionary);

var list = db.Query(query, param: p);

关于sql-server - Dapper 是否使用编号参数,例如 Massive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16001809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com