Может ли Glimpse предоставлять диагностику при использовании классов пространства имен SqlClient

Я загрузил 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, которое работает с этим пространством имен?

Есть ли другой способ решить эту проблему?


person Aheho    schedule 29.04.2013    source источник
comment
Просто наблюдение: если в вашем коде слишком много мест, которые создают соединение определенным образом, это может быть признаком того, что ваш код слишком повторяющийся.   -  person StriplingWarrior    schedule 29.04.2013
comment
Возможно, но как сказал кто-то умнее меня, где бы ты ни был, с этого и надо начинать.   -  person Aheho    schedule 29.04.2013


Ответы (2)


Я согласен с @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;

Наконец, дополнительную документацию по вкладке SQL можно получить, щелкнув значок ? в пользовательском интерфейсе Glimpse, когда выбрана вкладка, или перейдя на нашу Документация по SQL на getGlimpse.com. (Я добавлю эту информацию на эту страницу для дальнейшего использования.)

person nikmd23    schedule 30.04.2013
comment
В каком пространстве имен объявлен GlimpseDbConnection? - person Aheho; 30.04.2013
comment
Glimpse.Ado.AlternateType в пакете Glimpse.Ado. - person anthonyv; 30.04.2013

В разделе проблем на сайте Glimpse...

Получение Glimpse для работы с созданными вручную соединениями/командами SQL

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

person Community    schedule 07.09.2015