c# - 我需要参数化基本查询吗

标签 c# dapper

我有 EntityFrameworkLINQ to SQL 背景。

我正在考虑使用 dapper 来提高性能。

Dapper 会缓存其运行的每个查询的信息,这使其能够快速具体化对象并快速处理参数。当前的实现将此信息缓存在 ConcurrentDictionary 对象中。它存储的对象永远不会被刷新。如果您在不使用参数的情况下动态生成 SQL 字符串,则可能会遇到内存问题。我们可以将字典转换为LRU 缓存

我是否必须参数化所有查询。 即使查询没有任何参数。

示例

Select Id,Boo FROM dbo.FOO

最佳答案

您的查询没有任何变化,所以,不,您不需要参数化它。

警告是告诉您,如果您编写Select Id,Boo FROM dbo.FOO where Bar=3Select Id,Boo FROM dbo.FOO where Bar=4Select Id,Boo FROM dbo.FOO where Bar=5 然后将缓存 3 个查询。当您继续改变与 Bar 匹配的内容时,将会制作更多副本。

关于c# - 我需要参数化基本查询吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45207521/

相关文章:

c# - 从 app.config 文件中读取字符串

c# - 处理实现 IDisposable 的成员

dapper - 用于 varchar 的 DbString、IsFixedLength 和 IsAnsi

c# - XML 序列化小巧的结果

c# - 如何在一个解决方案中添加多个 namespace 和类

c# - 防止将特定的类型层次结构用于泛型参数

c# - 在 PostgreSQL 中读取 bytea 数据很慢

c# - 如何拉回复杂对象中的所有父/子数据

c# - Dapper NullReferenceException

c# - Dapper:ConnectionString 属性尚未初始化