Không thể truyền đối tượng thuộc loại 'MvcMiniProfiler.Data.EFProfiledDbConnection' để nhập 'System.Data.SqlClient. SqlConnection '.Không thể truyền đối tượng thuộc loại 'MvcMiniProfiler.Data.EFProfiledDbConnection' để nhập 'System.Data.SqlClient.SqlConnection'
Tôi đang cố gắng nâng cấp lên MvcMiniProfiler 1.9.0 và tôi tiếp tục nhận được điều này khi tôi gọi MiniProfilerEF.Initialize(). Tôi đã gỡ bỏ phần cấu hình system.data. Tôi không biết mình đang làm gì sai. Tôi đã làm theo các bước trên trang web, nhưng có lẽ tôi đã bỏ lỡ điều gì đó?
Tôi đang sử dụng mã EF đầu tiên 4.1 và tôi chuyển tên chuỗi kết nối của tôi vào một hàm tạo để tạo văn bản dữ liệu của tôi.
Web Activator
using Project.Web.App_Start;
using WebActivator;
[assembly: PreApplicationStartMethod(typeof(MiniProfiler), "Start")]
namespace Project.Web.App_Start {
public class MiniProfiler {
public static void Start()
{
if (Eco.Environment.IsDevelopment) {
MiniProfilerEF.Initialize();
}
}
}
}
StructureMap Registry:
using Project.Domain.Repositories;
using StructureMap.Configuration.DSL;
namespace Project.Web.DependencyResolution.Registries {
public class RepositoriesRegistry : Registry {
public RepositoriesRegistry() {
For<IProjectDataContext>().HybridHttpOrThreadLocalScoped().Use(() => new ProjectDataContext(Eco.Database.Name));
}
}
}
DataContext vị thi công:
public ProjectDataContext(string nameOrConnectionString)
: base(nameOrConnectionString) {
Active = new Active(this);
}
Tôi đã gỡ bỏ dataproviders system.data fron cấu hình của tôi kể từ khi tài liệu nói rằng tôi chỉ cần để gọi MiniProfilerEF.Initialize().
** Update
Trước đây trong 1,7 MvcMiniProfiler tôi phải thiết lập thuộc tính Database.DefaultConnectionFactory, nhưng tôi đã gỡ bỏ đó. Database.DefaultConnectionFactory luôn quay trở lại như là SqlConnectionFactory, không phải là ProfiledConnectionFactory hay cái gì đó như thế?
Bạn có thể cung cấp mã + tệp cấu hình không? Thông thường, bạn xác định chuỗi kết nối trong tệp cấu hình có cùng tên với lớp DBContext của bạn và bạn không bao giờ cần phải sử dụng một hàm tạo không mặc định. – Tejs
Iirc có thiết lập mẫu EF trên nuget. Nhưng: tôi có thể hỏi: bạn có luôn cho nó một kết nối định hình không? Hoặc đôi khi bạn (có lẽ tùy thuộc vào người dùng) sử dụng một kết nối hồ sơ, và đôi khi sử dụng một kết nối SQL thường? –
@MarcGravell Tôi đã làm điều này với phiên bản 1.7. Tôi sẽ chuyển từ một kết nối profiled (Debug) để kết nối sql trong (Release). Nó hoạt động tốt. –