Tôi đang cố gắng tích hợp MvcMiniProfiler vào dự án asp.net mvc + entity framewok của mình. Tất cả mọi thứ là ok cho lần đầu tiên yêu cầu web nhưng nó là cho ngoại lệ tại các yêu cầu khác.MvcMiniProfiler Không thể truyền đối tượng kiểu EFProfiledDbConnection
Dự án của tôi là
MVC 3
Entity Framework 4.1 (DatabaseFirst + POCO Generator DbContext)
MvcMiniProfiler.dll 1.9.0.0
MvcMiniProfiler.EntityFramework.dll 1.9.1.0
tôi cài đặt MvcMiniProfiler từ Nu-Nhận
thêm bên dưới để global.asax
protected void Application_BeginRequest()
{
if (Request.IsLocal)
{
MvcMiniProfiler.MiniProfiler.Start();
MiniProfilerEF.Initialize();
}
}
thêm bên dưới để 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>
Tôi nhận được ngoại lệ này
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)
ngoại lệ được xảy ra trong các cuộc gọi EF
ModaEntitiesWrapper.GetInstance().Articles
.AsNoTracking()
.Where(p => p.StatusId == 1).ToList();
Nếu tôi thay đổi phiên bản của MvcMiniProfiler.Data.ProfiledDbProvider trong Web.Config từ 1,8 .0.0 đến 1.9.0.0 Một loại ngoại lệ mới xảy ra trong cuộc gọi 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 câu trả lời hữu ích - chỉ cần cố định một lỗi nhỏ trong 'Create' mẫu – BrokenGlass
của bạn tôi đã cố gắng giải pháp của bạn nhưng bây giờ tôi nhận được một ngoại lệ như dưới đây System.NotSupportedException: Không thể xác định tên nhà cung cấp để kết nối loại 'MvcMiniProfiler.Data.EFProfiledDbConnection'. System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInvariantName (kết nối DbConnection) 613.588 System.Data.Entity.ModelConfiguration.Utilities.DbConnectionExtensions.GetProviderInfo (DbConnection kết nối, DbProviderManifest & providerManifest) 57 System.Data.Entity. DbModelBuilder.Build (DbConnection providerConnection) +159 – Yucel
Hey Yucel, bạn cần Entity Framework được cài đặt/tham chiếu trong dự án của bạn và bổ sung cho MvcMiniProfiler-bạn cũng cần gói Entity Framework. EntityConnectionStringBuilder sẽ phân tích cú pháp chuỗi kết nối Entity Framework với siêu dữ liệu cụ thể EF. ProviderConnectionString là cái mà chúng ta quen thuộc (tên, nhà cung cấp connectionString +). Nội bộ trong ADO.NET có một nhà máy với các nhà cung cấp đã đăng ký để khởi tạo nhà cung cấp chính xác dựa trên thuộc tính của nhà cung cấp trong chuỗi kết nối. Ví dụ, kết nối MSSQL thường sử dụng nhà cung cấp SqlClient. – Shelakel