Как я могу создать Profiled DataAdapter для использования с MVC MINI PROFILER? - PullRequest
2 голосов
/ 03 августа 2011

Ни один из объектов Command не имеет методов Fill, но прежним способом, который я делал, я мог создать новый OracleDataAdapter.Как создать экземпляр профилированного адаптера данных для профилирования активности моей базы данных с помощью MVC MINI PROFILER?

Все, что мне нужно, это использовать команду Fill с профилированным подключением MVC mini Profiler.

[ ОБНОВЛЕНИЕ ]

Я думаю, что многие, должно быть, делали это раньше, если только они не используют Entity Framework, который работает хорошо и легко.В моем случае запрос загружается динамически в Datatable, и сущность не может быть отображена, поскольку она неизвестна приложению.

Самая большая проблема после создания команды профилированным соединением - установить его вDataAdapter, который не может быть создан.

[ ОБНОВЛЕНИЕ ] Дополнительные ссылки:

1 Ответ

1 голос
/ 13 мая 2015

Согласно Рори

"Для этого предусмотрен класс ProfiledDbDataAdapter, который вы можете использовать, обернутый вокруг существующего SqlDataAdapter."

По этой подсказке вы можете написатьнекоторый код, подобный этому

public DbConnection _dbConnection;
private DbCommand _dbCommand;
private DbDataAdapter _dbDataAdapter;

public DataSet GetResultByProcWithSingleParam(string procName, SqlParameter sqlParams)
        {
            try
            {
                _dbCommand = _dbConnection.CreateCommand();
                _dbCommand.CommandType = CommandType.StoredProcedure;
                _dbCommand.Parameters.Add(sqlParams);
                _dbCommand.CommandText = procName;
                _dbConnection.Open();
                _dbCommand.ExecuteNonQuery();
                _dbDataAdapter = DbProviderFactories.GetFactory("System.Data.SqlClient").CreateDataAdapter();
                _dbDataAdapter = new ProfiledDbDataAdapter(_dbDataAdapter);
                _dbDataAdapter.SelectCommand = _dbCommand;
                _ds = new DataSet();
                _dbDataAdapter.Fill(_ds);
                _dbConnection.Close();
                return _ds;
            }
            catch (Exception ex)
            {

                throw;
            }

        } 

И пространства имен для этого кода:

using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using StackExchange.Profiling;
using StackExchange.Profiling.Data;

Я надеюсь, что это будет работать.В моем случае это работает успешно.

...