Dapper.NET 列表扩展
示例
数据库查询中的一个常见情况IN(...)是在运行时在此处生成列表。大多数RDBMS对此没有一个很好的隐喻-并且没有通用的跨RDBMS解决方案。相反,dapper提供了一些温和的自动命令扩展。所需要的只是提供的参数值IEnumerable。涉及的命令@foo将扩展为(@foo0,@foo1,@foo2,@foo3)(针对4个项目的序列)。最常见的用法是IN:
int[] orderIds = ...
var orders = connection.Query<Order>(@"
select *
from Orders
where Id in @orderIds", new { orderIds });然后,它会自动扩展以针对多行获取发出适当的SQL:
select * from Orders where Id in (@orderIds0, @orderIds1, @orderIds2, @orderIds3)
加上参数@orderIds0等作为从错误中获取的值。请注意,SQL最初实际上是无效的,这是有意为之的,以确保不会错误地使用此功能。此功能还可以与SQLServer中的OPTIMIZEFOR/UNKNOWNquery-hint一起正常使用;如果您使用:
option (optimize for
(@orderIds unknown))它将正确扩展为:
option (optimize for
(@orderIds0 unknown, @orderIds1 unknown, @orderIds2 unknown, @orderIds3 unknown))
热门推荐
1 如何训练狗狗不叫
2 训练狗狗不叫
3 训练狗狗随行
4 怎么训练狗狗不叫
7 训练比熊狗狗教程
10 上海狗狗训练
11 怎么训练狗狗上厕所
12 训练狗狗趴下
13 狗狗服从训练
14 训练狗狗拒食
15 训练狗狗笑
16 训练狗狗大便
17 训练狗狗立
18 训练狗狗捡东西