4

ナゲット経由でプロジェクトに MiniProfiler と MiniProfiler.EF をインストールしました。

MiniProfiler を使用する前に、モデル リポジトリでこれを使用して接続を開きます。

    public class NotificationRepository
    {
       private CBNotificationModel.CB_NotificationEntities db;

       public NotificationRepository()
       {
          db = new CB_NotificationEntities();
       }

       public NotificationContact GetNotificationContacts()
       {
          return db.NotificationContacts.ToList();
       }
    }

私が作成したミニプロファイラーを使用するには:

  public static class ConnectionHelper
    {
        public static CB_NotificationEntities GetEntityConnection()
        {
            var conn = new StackExchange.Profiling.Data.EFProfiledDbConnection(GetConnection(), MiniProfiler.Current);

            return ObjectContextUtils.CreateObjectContext<CB_NotificationEntities>(conn); // resides in the MiniProfiler.EF nuget pack
        }

        public static EntityConnection GetConnection()
        {
            return new EntityConnection(ConfigurationManager.ConnectionStrings["CB_NotificationEntities"].ConnectionString);
        }
    }

モデルリポジトリは現在使用しています

db = ConnectionHelper.GetEntityConnection();

ただし、これによりエラーが発生します。

タイプ 'System.StackOverflowException' の未処理の例外が mscorlib.dll で発生しました

手順がありませんか?MiniProfilerEF.Initialize() と MiniProfilerEF.Initialize_EF42() を Application_start() に追加しようとしましたが、それは与えられたエラーを変更するだけです。

コードファーストでない限り、miniprofiler を使用するようにエンティティ フレームワーク プロジェクトをセットアップするための情報はあまりないようです。

4

1 に答える 1

7

ConnectionHelper クラスを次のように変更することで、これを機能させることができました。

    public static class ConnectionHelper
    {
            public static CB_NotificationEntities GetEntityConnection()
            {

                var connectionString = ConfigurationManager.ConnectionStrings["CB_NotificationEntities"].ConnectionString;
                var ecsb = new EntityConnectionStringBuilder(connectionString);
                var sqlConn = new SqlConnection(ecsb.ProviderConnectionString);
                var pConn = new StackExchange.Profiling.Data.EFProfiledDbConnection(sqlConn, MiniProfiler.Current);

                var context = ObjectContextUtils.CreateObjectContext<CB_NotificationEntities>(pConn);
                return context;

          }
     }
于 2012-06-27T16:06:59.517 に答える