2

どのCommandオブジェクトにもFillメソッドはありませんが、以前の方法で、新しいOracleDataAdapterをインスタンス化できました。プロファイルされたDataAdapterをインスタンス化して、MVC MINI PROFILERを使用してデータベースアクティビティをプロファイリングするにはどうすればよいですか?

必要なのは、MVCminiProfilerのプロファイル接続でFillコマンドを使用することだけです。

[更新]

Entity Frameworkを使用している場合を除いて、多くの人が以前にそれを行ったことがあると思います。私の場合、クエリはDatatableに動的に読み込まれ、エンティティはアプリケーションによって不明であるため、マッピングできません。

プロファイル接続によってコマンドを作成した後の最大の問題は、インスタンス化できないDataAdapterにコマンドを設定することです。

[更新]その他の参考資料:

4

1 に答える 1

2

ロリーによると

「このために提供されているクラス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;

私はそれがうまくいくことを願っています。私の場合、正常に動作しています。

于 2015-05-13T08:49:26.953 に答える