无法将“'System.Data.SqlClient.SqlConnection'.”类型的对象转换为‘System.Data.SqlClient.SqlConnection’.类型的
我正在尝试升级到MvcMiniProfiler 1.9.0,当我调用MiniProfilerEF.Initialize()时,我一直得到它。我已经删除了system.data配置部分。我不知道我做错了什么。我遵循了网站上的步骤,但也许我错过了什么?
我首先使用EF代码4.1,并将连接字符串的名称传递到构造函数中,以创建数据文本。
Web激活器
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注册表:
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构造器:
public ProjectDataContext(string nameOrConnectionString)
: base(nameOrConnectionString) {
Active = new Active(this);
}我已经删除了system.data数据提供者的配置,因为文档说我只需要调用MiniProfilerEF.Initialize()。
**最新情况
以前,在1.7MvcMiniProfiler中,我必须设置Database.DefaultConnectionFactory属性,但我已经删除了它。Database.DefaultConnectionFactory总是以SqlConnectionFactory的形式出现,难道不是ProfiledConnectionFactory之类的吗?
发布于 2012-04-05 19:00:32
我也看到了同样的错误。它把我逼疯了,但我终于明白了。我的问题与web.config、程序集、Initialize_42或Initialize(false)黑客等无关。
这就是我出错的地方。
我启用了这样的自动迁移应用程序:
App_Start:
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<DataContext, Migrations.Configuration>()
);移民/配置:
internal sealed class Configuration
: DbMigrationsConfiguration<Path.To.DataContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
}这是通过WebActivator触发的,如下所示:
[assembly: WebActivator.PreApplicationStartMethod(
typeof(service_tracker_mvc.App_Start.DatabaseInitializer), "Start")]我无意中发现禁用此过程会导致分析器工作。问题是,这一过程发生得太快了。这种情况通常发生在Application_Start (如果您不使用这种花哨的WebActivator东西的话),所以我将其改为PostStart。现在它起作用了:
▼▼▼▼
[assembly: WebActivator.PostApplicationStartMethod(
typeof(service_tracker_mvc.App_Start.DatabaseInitializer), "Start")]发布于 2017-01-12 06:59:02
我犯了一个错误:添加MiniProfiler.EF而不是MiniProfiler.EF6。删除MiniProfiler.EF并用EF6版本替换它解决了我的问题。
发布于 2014-04-30 13:29:45
请参阅https://stackoverflow.com/a/10814033/311289
这是因为在初始化小型化分析器之前执行DB操作,在db上下文的contstructor中放置一个断点,在MiniProfilerEF.Initialize();行上放置另一个断点,然后修改直到初始化第一次。
https://stackoverflow.com/questions/8669568
复制相似问题