首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将“MvcMiniProfiler.Data.EFProfiledDbConnection”类型的对象强制转换为“System.Data.SqlClient.SqlConnection”类型

无法将“MvcMiniProfiler.Data.EFProfiledDbConnection”类型的对象强制转换为“System.Data.SqlClient.SqlConnection”类型
EN

Stack Overflow用户
提问于 2011-12-29 15:15:53
回答 5查看 2.6K关注 0票数 8

无法将“'System.Data.SqlClient.SqlConnection'.”类型的对象转换为‘System.Data.SqlClient.SqlConnection’.类型的

我正在尝试升级到MvcMiniProfiler 1.9.0,当我调用MiniProfilerEF.Initialize()时,我一直得到它。我已经删除了system.data配置部分。我不知道我做错了什么。我遵循了网站上的步骤,但也许我错过了什么?

我首先使用EF代码4.1,并将连接字符串的名称传递到构造函数中,以创建数据文本。

Web激活器

代码语言:javascript
复制
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注册表:

代码语言:javascript
复制
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构造器:

代码语言:javascript
复制
    public ProjectDataContext(string nameOrConnectionString)
        : base(nameOrConnectionString) {
        Active = new Active(this);
    }

我已经删除了system.data数据提供者的配置,因为文档说我只需要调用MiniProfilerEF.Initialize()。

**最新情况

以前,在1.7MvcMiniProfiler中,我必须设置Database.DefaultConnectionFactory属性,但我已经删除了它。Database.DefaultConnectionFactory总是以SqlConnectionFactory的形式出现,难道不是ProfiledConnectionFactory之类的吗?

EN

回答 5

Stack Overflow用户

发布于 2012-04-05 19:00:32

我也看到了同样的错误。它把我逼疯了,但我终于明白了。我的问题与web.config、程序集、Initialize_42Initialize(false)黑客等无关。

这就是我出错的地方。

我启用了这样的自动迁移应用程序:

App_Start:

代码语言:javascript
复制
Database.SetInitializer(
    new MigrateDatabaseToLatestVersion<DataContext, Migrations.Configuration>()
);

移民/配置:

代码语言:javascript
复制
internal sealed class Configuration 
    : DbMigrationsConfiguration<Path.To.DataContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }
}

这是通过WebActivator触发的,如下所示:

代码语言:javascript
复制
[assembly: WebActivator.PreApplicationStartMethod(
    typeof(service_tracker_mvc.App_Start.DatabaseInitializer), "Start")]

我无意中发现禁用此过程会导致分析器工作。问题是,这一过程发生得太快了。这种情况通常发生在Application_Start (如果您不使用这种花哨的WebActivator东西的话),所以我将其改为PostStart。现在它起作用了:

代码语言:javascript
复制
                        ▼▼▼▼
[assembly: WebActivator.PostApplicationStartMethod(
    typeof(service_tracker_mvc.App_Start.DatabaseInitializer), "Start")]
票数 2
EN

Stack Overflow用户

发布于 2017-01-12 06:59:02

我犯了一个错误:添加MiniProfiler.EF而不是MiniProfiler.EF6。删除MiniProfiler.EF并用EF6版本替换它解决了我的问题。

票数 2
EN

Stack Overflow用户

发布于 2014-04-30 13:29:45

请参阅https://stackoverflow.com/a/10814033/311289

这是因为在初始化小型化分析器之前执行DB操作,在db上下文的contstructor中放置一个断点,在MiniProfilerEF.Initialize();行上放置另一个断点,然后修改直到初始化第一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8669568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档