看起来,我可以取消准备的唯一方法是调用SqlCommand.Dispose()
,即使在这种情况下,我也没有看到未准备攻击SQL Server(从SQL探查器查看,没有sp_unprepare)。但是,当然SqlCommand.Dispose()
确实摆脱了SqlCommand
,这反过来又从服务器缓存中删除了 prepare 语句。
还有什么其他方法可以毫无准备地保持SqlCommand
.最佳实践是当我不需要它时,我应该取消准备,我如何在不打电话SqlCommand.Dispose()
的情况下去做呢?
Prepare 不像 dispose 处理对象那样处理内存。准备用于预重新编译您的 sql,以防您一遍又一遍地运行相同的查询,这样做可以节省时间。准备在服务器级别执行,从语句生成的计划完全由数据库管理。因此,客户没有准备的概念是无关紧要的。