Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与SQL Server一起使用时如何定期刷新dapper.net缓存_C#_Sql Server 2005_Tsql_Orm_Dapper - Fatal编程技术网

C# 与SQL Server一起使用时如何定期刷新dapper.net缓存

C# 与SQL Server一起使用时如何定期刷新dapper.net缓存,c#,sql-server-2005,tsql,orm,dapper,C#,Sql Server 2005,Tsql,Orm,Dapper,有人能解释一下这是什么意思吗(来自Dapper.net网站) 限制和注意事项 Dapper缓存有关它运行的每个查询的信息,这使它能够快速实现对象和快速处理参数。当前实现将此信息缓存在ConcurrentDictionary对象中。它存储的对象永远不会刷新如果不使用参数动态生成SQL字符串,可能会遇到内存问题。我们可能会将字典转换为LRU缓存 我不明白粗体字是什么意思。我正在使用SQL Server和c#client 有人能给我一个c代码的例子吗?它会造成内存问题。多谢各位 如果在不使用参数的情况

有人能解释一下这是什么意思吗(来自Dapper.net网站)

限制和注意事项

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

我不明白粗体字是什么意思。我正在使用SQL Server和c#client

有人能给我一个c代码的例子吗?它会造成内存问题。多谢各位

如果在不使用参数的情况下动态生成SQL字符串,则可能会遇到内存问题

您可以这样做:

cmd.CommandText = "SELECT email, passwd, login_id, full_name " + 
                  "FROM members " +
                  "WHERE email = '" + email + "'";
string s = "SELECT email, passwd, login_id, full_name " + 
           "FROM members WHERE " +
           "email = @email";
SqlCommand cmd = new SqlCommand(s);
cmd.Parameters.Add("@email", email);
或者您可以这样做:

cmd.CommandText = "SELECT email, passwd, login_id, full_name " + 
                  "FROM members " +
                  "WHERE email = '" + email + "'";
string s = "SELECT email, passwd, login_id, full_name " + 
           "FROM members WHERE " +
           "email = @email";
SqlCommand cmd = new SqlCommand(s);
cmd.Parameters.Add("@email", email);
后者是参数化的。它将被缓存一次。前者不是参数化的。每次您使用不同的
电子邮件值编写类似的查询时,它都会被缓存。这会让你的记忆爆炸

后者要高得多。它可以避免注射攻击。dapper可以缓存一次。SQL Server将编译一次执行计划并将其缓存

您应该(必须)已经在使用参数化查询了。如果你没有,放下你正在做的一切,把这件事作为当务之急

有人能给我一个c代码的例子吗?它会造成内存问题。多谢各位

只需将前者循环。看着你的记忆力增长。在循环中执行后者。注意你的记忆力不要增长