将Command对象/ Reader传递给函数是个好主意吗?

时间:2010-04-27 09:47:27

标签: c# .net mysql asp.net-mvc

我在使用.Net 4(C#)的MySql数据库时遇到了一些无法解释的错误(连接池中的连接耗尽)。直到现在我所有寻找原因的尝试都是徒劳的。现在我也有一种情况,即表上的锁定很长时间都没有被清除,即使我所做的只是从它读取操作。

我的代码看起来没问题(我已将所有读者和连接放在使用块中)。我唯一的异常是我已经将MySqlCommand和MySqlDataReader对象作为参数传递给使用它们的函数。

这对我来说似乎不是一个坏主意,因为它避免了一些重复(干!)。但由于我找不到任何其他解释,我不得不怀疑这是导致问题的。

您怎么看?

2 个答案:

答案 0 :(得分:0)

不,传递对连接,命令和数据读取器的引用不是问题。只要对代码的哪一部分处理它们有明确的责任,你就可以以任何你喜欢的方式抛出引用。

您没有说出处理命令对象的任何内容。他们有Dispose方法,也应安排在安全的一面。

答案 1 :(得分:0)

正如Guffa所说,传递对这些实例的引用没有任何技术问题。但是,更好的做法是在执行数据访问的方法中填充DTO,并将其传递给链中的下一个方法,或者返回它。它会降低你的复杂性并缓解混乱。