我已经下载了Glimpse和Glimpse.ADO扩展并将其安装在我的测试实例上。

我以为可以捕获所有已执行的sql,但似乎它无法捕获编写代码的命令。

        using (var conn = new SqlConnection(cString))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "Select count(*) from table";
            cmd.CommandType = CommandType.Text;

            txtResult2.Text = cmd.ExecuteScalar().ToString();
            conn.Close();
        }

我可以得到它来提供来自测试页面的信息,其中的sql代码如下所示:
        var factory =DbProviderFactories.GetFactory(cString.ProviderName);
        using (var connection = factory.CreateConnection())
        {
            connection.ConnectionString = connectionString.ConnectionString;
            connection.Open();

            using (var command = connection.CreateCommand())
            {
                command.CommandText = "SELECT COUNT(*) FROM table";
                command.CommandType = CommandType.Text;
                txtResult1.Text = command.ExecuteScalar().ToString();
            }
        }

但是,如果我只能使用此dbProviderFactories方法捕获数据,则代码中有太多地方需要更改。

有没有办法让Glimpse.ADO与System.Data.SqlClient.SqlConnection类一起使用?是否还有另一个与此 namespace 配合使用的Glimpse扩展?

还有另一种解决这个问题的方法吗?

最佳答案

我同意@StriplingWarrior,利用提供程序工厂将使您的代码更干燥,并遵循最佳实践。 DbProviderFactories确实是执行此操作的最佳方法,并且您的代码不会明确依赖于Glimpse。

但是,如果您真的想继续使用现有的应用程序代码,则Glimpse将通过以下更改为您提供支持:

using (var conn = new GlimpseDbConnection(new SqlConnection(cString))
{
    conn.Open();
    DbCommand cmd = conn.CreateCommand();
    cmd.CommandText = "Select count(*) from table";
    cmd.CommandType = CommandType.Text;

    txtResult2.Text = cmd.ExecuteScalar().ToString();
    conn.Close();
}

在上面的示例中,该命令是使用CreateCommand()方法创建的,这消除了将命令与连接关联的需要。

另外,您仍然可以像下面这样显式创建命令:
conn.Open();
DbCommand cmd = new GlimpseDbCommand(new SqlCommand());
cmd.Connection = conn;
cmd.CommandText = "Select count(*) from table";
cmd.CommandType = CommandType.Text;

最后,通过选择选项卡上的Glimpse UI中的?图标,或通过转到SQL documentation上的getGlimpse.com,可以获得有关SQL选项卡的更多文档。 (,我会将此信息添加到该页面中,以备将来引用。)

关于asp.net - 使用SqlClient namespace 类时,Glimpse是否可以提供诊断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16285844/

10-11 03:26