【问题标题】:Can Glimpse provide diagnostics when using the SqlClient namespace classes使用 SqlClient 命名空间类时可以 Glimpse 提供诊断吗
【发布时间】:2013-04-29 18:38:27
【问题描述】:

我已经下载了 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 类一起工作?是否有另一个适用于此命名空间的 Glimpse 扩展?

还有其他方法可以解决这个问题吗?

【问题讨论】:

  • 只是一个观察:如果您的代码中有太多地方以特定方式创建连接,这可能表明您的代码过于重复。
  • 也许吧,但正如比我更聪明的人所说,“无论你在哪里,都必须从那里开始”

标签: asp.net sql-server diagnostics glimpse


【解决方案1】:

我同意@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 中的 ? 图标,或转到 getGlimpse.com 上的 SQL documentation,可以获得有关 SQL 选项卡的更多文档。 (我会将此信息添加到该页面以供将来参考。

【讨论】:

  • GlimpseDbConnection 是在什么命名空间中声明的?
  • Glimpse.Ado.AlternateTypeGlimpse.Ado 包中。
【解决方案2】:

在 Glimpse 网站的问题部分...

让 Glimpse 使用手动创建的 SQL 连接/命令

http://getglimpse.com/Docs/Manual-ADO-Integration

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-02
    • 2014-04-09
    • 2012-06-24
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    相关资源
    最近更新 更多