我可以在MS.Net framework 4.0中使用SqlClient的Mono实现吗?

时间:2013-05-20 06:49:03

标签: c# .net mono sqlclient

我们正在测试一些选项以解决.Net 4.0 SqlClient(许多GC和终结器等)的性能问题,并考虑使用不同的Sql客户端实现 - Mono浮现在脑海中。

1)是否可以在MS.Net应用程序中使用SqlClient的Mono实现?如果是这样的话? 2)Mono实现是否“稳定”?最推荐哪个版本?
3)SqlCommand,QueryResults等的单声道实现是否包含终结器?

谢谢!

1 个答案:

答案 0 :(得分:4)

如果您看到这些影响GC,那么建议没有正确使用它们。其中,SqlDataReader首先没有终结器,因此我假设我们正在谈论SqlCommandSqlConnection。这两个都继承自Component,在这两种情况下,Dispose()调用从GC中取消注册 - 它们是:

public void Dispose()
{
    this.Dispose(true);
    GC.SuppressFinalize(this);
}

因此:如果您将这些设置在GC中显示为终结器,请查看您是否正确处理对象。最简单的方法是通过using语句。例如:

using(var conn = OpenSomeConnection())
using(var cmd = conn.CreateCommand()) {
    // TODO configure command

    using(var reader = cmd.ExecuteReader()) {
        // TODO consume data
    }
}