MvcMiniProfilerをasp.net mvc + entity framewokプロジェクトに統合しようとしています。初めてのWebリクエストはすべてOKですが、他のリクエストでは例外が発生しています。MvcMiniProfilerタイプEFProfiledDbConnectionのオブジェクトをキャストできません
私のプロジェクトは、私はNU-取得からMvcMiniProfilerをインストール
MVC 3
エンティティフレームワーク4.1(DatabaseFirst + POCOジェネレータDbContext)
MvcMiniProfiler.dll 1.9.0.0
MvcMiniProfiler.EntityFramework.dll 1.9.1.0
です
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MvcMiniProfiler.MiniProfiler.Start();
MiniProfilerEF.Initialize();
}
}
をGlobal.asaxのために以下を追加しました
<system.data>
<DbProviderFactories>
<remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
<add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" description="MvcMiniProfiler.Data.ProfiledDbProvider" type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.8.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
</DbProviderFactories>
</system.data>
は私が
System.InvalidCastException was unhandled by user code
Message=Unable to cast object of type 'MvcMiniProfiler.Data.EFProfiledDbConnection' to type 'System.Data.SqlClient.SqlConnection'.
Source=System.Data
StackTrace:
at System.Data.SqlClient.SqlCommand.set_DbConnection(DbConnection value)
at System.Data.Common.DbCommand.set_Connection(DbConnection value)
at MvcMiniProfiler.Data.ProfiledDbCommand.set_DbConnection(DbConnection value) in C:\Users\sam\Desktop\mvc-mini-profiler\MvcMiniProfiler\Data\ProfiledDbCommand.cs:line 118
at System.Data.Common.DbCommand.set_Connection(DbConnection value)
at System.Data.Common.Utils.CommandHelper.SetStoreProviderCommandState(EntityCommand entityCommand, EntityTransaction entityTransaction, DbCommand storeProviderCommand)
at System.Data.EntityClient.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
at System.Data.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
例外はEFで発生しているこの例外を私は1.8からのWeb.ConfigにMvcMiniProfiler.Data.ProfiledDbProviderのバージョンを変更した場合
ModaEntitiesWrapper.GetInstance().Articles
.AsNoTracking()
.Where(p => p.StatusId == 1).ToList();
コールを取得しています.0.0〜1.9.0.0 MiniProfilerEF.Initialize()呼び出しで新しいタイプの例外が発生しました。
System.IndexOutOfRangeException was unhandled by user code
Message=The given DataRow is not in the current DataRowCollection.
Source=System.Data
StackTrace:
at System.Data.DataRowCollection.Remove(DataRow row)
at MvcMiniProfiler.MiniProfilerEF.Initialize()
+1便利な答えはちょうど私があなたのソリューションを試してみましたが、今、私は System.NotSupportedException以下のような別の例外を取得していますあなたの 'Create'サンプル – BrokenGlass
にマイナーなバグを修正しましたタイプ 'MvcMiniProfiler.Data.EFProfiledDbConnection'の。 System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInvariantName(たDbConnection接続)613588 System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo(たDbConnection接続、DbProviderManifest&providerManifest)+57 System.Data.Entity。 DbModelBuilder。Build(DbConnection providerConnection)+159 – Yucel
Hey Yucel、あなたのプロジェクトにEntity Frameworkをインストール/参照し、MvcMiniProfilerに追加する必要があります。また、Entity Frameworkパッケージが必要です。 EntityConnectionStringBuilderは、EF固有のメタデータでEntity Framework接続文字列を解析します。 ProviderConnectionStringは、(name、connectionString + provider)に使用されているものです。内部的にADO.NETには、接続文字列のプロバイダ属性に基づいて正しいプロバイダをインスタンス化する登録プロバイダを持つファクトリがあります。たとえば、MSSQL接続では通常、SqlClientプロバイダが使用されます。 – Shelakel