当前位置: 首页 > 编程笔记 >

Dapper.NET 列表扩展

洪越泽
2023-03-14
本文向大家介绍Dapper.NET 列表扩展,包括了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最初实际上是无效的,这是有意为之的,以确保不会错误地使用此功能。此功能还可以与SQL Server中的OPTIMIZE FOR/ UNKNOWNquery-hint一起正常使用;如果您使用:

option (optimize for
    (@orderIds unknown))

它将正确扩展为:

option (optimize for
    (@orderIds0 unknown, @orderIds1 unknown, @orderIds2 unknown, @orderIds3 unknown))

           

 类似资料:
  • 问题内容: 我想将一个字符串添加到列表中: 但它打印。这是为什么? 问题答案: 该函数是就地函数,即它将对原始列表本身进行更改。来自文档 通过添加 给定 列表中的所有项目来扩展列表;等效于a [len(a):] =L。 因此,您无需将其重新分配回列表变量。 你可以做 然后当您打印时 更好的方法 如下所述使用是更好的方法。

  • 本文向大家介绍Dapper.NET null vs DBNull,包括了Dapper.NET null vs DBNull的使用技巧和注意事项,需要的朋友参考一下 示例 在ADO.NET,正确处理null是一个经常引起混淆的问题。dapper的关键在于你不必这样做,它会在内部处理所有的事情。 参数值如果为null,则正确地将其作为 DBNull.Value 发送 读取的 null 值被表示为 nu

  • 本文向大家介绍Dapper.NET 值内联,包括了Dapper.NET 值内联的使用技巧和注意事项,需要的朋友参考一下 示例 有时,参数的便利性(就维护和表达能力而言)可能会被其将其视为参数的性能成本所抵消。例如,当页面大小由配置设置固定时。或者状态值与值匹配enum。考虑: 这里唯一的真实参数是customerId-其他两个是实际上不会更改的伪参数。如果RDBMS将其检测为常量,通常可以做得更好

  • 在Ralf Hinze的“程序优化的Kan扩展”中,有一个列表类型的定义,它是基于从单子类中的遗忘函子的右Kan扩展(第7.4节)。本文给出了如下Haskell实现: 我能够定义通常的nil和cons构造函数:

  • 问题内容: 在Python(2.7)中发现了从未有过的有趣的东西。 这个: 确实有效,结果是: 但 给 有人可以解释为什么吗?感谢您的回答。 问题答案: Python区分和运算符,并为它们提供了单独的挂钩。和。该类型只是为后者提供了不同的实现。 列表分别实现这些功能更为有效;必须返回一个全新的列表,而可以扩展然后返回。 在C代码中,是由所实现的,该只需调用,或者在python代码中,由。后者根据设

  • 用于SQLAlchemy查询结构的序列化程序/反序列化程序对象,允许“上下文”反序列化。 任何基于sqlAlchemy.sql的sqlAlchemy查询结构。 或sqlacalchemy.orm。 可以使用。结构引用的映射器、表、列、会话等不以序列化形式持久化,而是在反序列化时与查询结构重新关联。 用法与标准python pickle模块的用法几乎相同: from sqlalchemy.ext.s