gpt4 book ai didi

c# - 无法将类型为 'MvcMiniProfiler.Data.EFProfiledDbConnection' 的对象转换为类型 'System.Data.SqlClient.SqlConnection'

转载 作者:太空狗 更新时间:2023-10-29 20:28:37 27 4
gpt4 key购买 nike

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

我正在尝试升级到 MvcMiniProfiler 1.9.0,并且在我调用 MiniProfilerEF.Initialize() 时不断收到此消息。我已经删除了 system.data 配置部分。我不知道我做错了什么。我已按照网站上的步骤操作,但也许我错过了什么?

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

网络激活器

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();
}
}
}
}

结构图注册表:

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));
}
}
}

数据上下文构造函数:

    public ProjectDataContext(string nameOrConnectionString)
: base(nameOrConnectionString) {
Active = new Active(this);
}

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

**更新

以前在 1.7 MvcMiniProfiler 中我必须设置 Database.DefaultConnectionFactory 属性,但我已经删除了它。 Database.DefaultConnectionFactory 总是作为 SqlConnectionFactory 返回,它不应该是 ProfiledConnectionFactory 或类似的东西吗?

最佳答案

我看到了同样的错误。这让我抓狂,但我终于想通了。我的问题与 web.config、程序集、Initialize_42Initialize(false) hack 或任何东西无关。

这是我出错的地方......

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

应用程序启动:

Database.SetInitializer(
new MigrateDatabaseToLatestVersion<DataContext, Migrations.Configuration>()
);

迁移/配置.cs:

internal sealed class Configuration 
: DbMigrationsConfiguration<Path.To.DataContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
}

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

[assembly: WebActivator.PreApplicationStartMethod(
typeof(service_tracker_mvc.App_Start.DatabaseInitializer), "Start")]

我无意中发现禁用此进程会导致探查器正常工作。碰巧的是,这个 init 进程发生的时间太早了。它通常发生在 Application_Start 期间(如果您没有使用这种奇特的 WebActivator 东西)所以我将其更改为 PostStart。现在可以了:

                        ▼▼▼▼
[assembly: WebActivator.PostApplicationStartMethod(
typeof(service_tracker_mvc.App_Start.DatabaseInitializer), "Start")]

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

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