为什么要设置command对象参数的size参数?我们的数据访问层使用命令对象与sqlserver进行通信。在大多数情况下,我已将字段大小(匹配sqlserver中的列大小)硬编码到命令参数生成器中。比如:SqlParameterparam=newSqlParameter("@name",NVarChar,4000);在这里指定一个值(本例中为4000)而不是将其保留为0有什么好处?当列大小发生变化时必须重新编译是一件很痛苦的事情。其实很重要。以不同参数长度发出的相同请求最终在过程缓存中作为不同查询结束。随着时间的推移,这会导致过度活跃的编译事件导致缓存污染。这个问题是Linq2SQL和EF提供程序如何实现的主要设计缺陷之一。了解数据访问代码如何影响数据库性能。如果没有正确指定参数长度,相关问题请参见查询性能和计划缓存问题。没有性能或执行时间优势-如果未显式传递,则推断大小:如果未在size参数中显式设置,则根据dbType参数的值推断大小。我想您可以说,通过显式声明参数的大小以匹配SQLServer中字段的大小,您可以更好地告诉代码的读者您的数据模型的局限性。在旁观者的眼中,这可能会有多大用处。如果指定的大小与SQL列的宽度相匹配,那么您可能有另一层来检测和/或防止数据丢失。(当用户输入或应用程序生成的字符多于可以存储在数据库中时会发生什么?)也许问题与所有这些Microsoft缓冲区溢出有关?以上就是C#学习教程:为什么要设置command对象参数的size参数?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
