gpt4 book ai didi

c# - MvcMiniProfiler 无法转换类型为 EFProfiledDbConnection 的对象

转载 作者:太空狗 更新时间:2023-10-29 21:14:02 24 4
gpt4 key购买 nike

我正在尝试将 MvcMiniProfiler 集成到我的 asp.net mvc+entity framewok 项目中。第一次网络请求一切正常,但在其他请求中出现异常。

我的项目是
MVC 3
Entity Framework 4.1(DatabaseFirst + POCO 生成器 DbContext)
MvcMiniProfiler.dll 1.9.0.0
MvcMiniProfiler.EntityFramework.dll 1.9.1.0
我从 Nu-Get 安装 MvcMiniProfiler

在下面添加到 global.asax

    protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MvcMiniProfiler.MiniProfiler.Start();
MiniProfilerEF.Initialize();
}
}

在下面添加到 web.config

   <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调用出现异常

ModaEntitiesWrapper.GetInstance().Articles
.AsNoTracking()
.Where(p => p.StatusId == 1).ToList();

如果我在 Web.Config 中将 MvcMiniProfiler.Data.ProfiledDbProvider 的版本从 1.8.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()

最佳答案

也许这会有所帮助。将 MiniProfilerEF.Initialize(); 移动到方法 Application_Start() 的顶部。请注意,在 EF 4.1 及更高版本中,调用的方法应改为 MiniProfilerEF.Initialize_EF42();

protected void Application_Start() {
Logger.Info("Application start");
MiniProfilerEF.Initialize_EF42();
// ...
}

关于c# - MvcMiniProfiler 无法转换类型为 EFProfiledDbConnection 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9344777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com