C# 与SQL Server一起使用时如何定期刷新dapper.net缓存
有人能解释一下这是什么意思吗(来自Dapper.net网站) 限制和注意事项 Dapper缓存有关它运行的每个查询的信息,这使它能够快速实现对象和快速处理参数。当前实现将此信息缓存在ConcurrentDictionary对象中。它存储的对象永远不会刷新如果不使用参数动态生成SQL字符串,可能会遇到内存问题。我们可能会将字典转换为LRU缓存 我不明白粗体字是什么意思。我正在使用SQL Server和c#client 有人能给我一个c代码的例子吗?它会造成内存问题。多谢各位 如果在不使用参数的情况下动态生成SQL字符串,则可能会遇到内存问题 您可以这样做: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代码的例子吗?它会造成内存问题。多谢各位 如果在不使用参数的情况
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代码的例子吗?它会造成内存问题。多谢各位
只需将前者循环。看着你的记忆力增长。在循环中执行后者。注意你的记忆力不要增长