Entity framework 在线程池线程上执行时未使用数据库DefaultConnectionFactory

Entity framework 在线程池线程上执行时未使用数据库DefaultConnectionFactory,entity-framework,Entity Framework,我有一个使用EntityFramework5.0的Asp.NETMVC4项目 由于某些原因,当我从线程池线程执行EF代码时,没有调用DefaultConnectionFactory 我在Asp.Net MVC项目的应用程序启动事件中设置了连接工厂: Database.DefaultConnectionFactory = new WebConnectionFactory(); 到目前为止,这在所有数据访问代码上都成功运行 我有一个Parallel.ForEach循环,它调用了一些EF代码。由于某

我有一个使用EntityFramework5.0的Asp.NETMVC4项目

由于某些原因,当我从线程池线程执行EF代码时,没有调用DefaultConnectionFactory

我在Asp.Net MVC项目的应用程序启动事件中设置了连接工厂:

Database.DefaultConnectionFactory = new WebConnectionFactory();
到目前为止,这在所有数据访问代码上都成功运行

我有一个Parallel.ForEach循环,它调用了一些EF代码。由于某些原因,调用DefaultConnectionFactory时从未命中。这个工厂对于我的代码的执行至关重要,因此调用失败(它使用默认的连接字符串)


您知道为什么在新线程上运行时不会调用此DefaultConnectionFactory吗?

您需要获得为要使用的每次调用建立的连接。例如,使用以下代码

private static void UsingCustomConnection()
{
    using (var conn = Database.DefaultConnectionFactory.CreateConnection("YourDbName"))
    {
        using (var context = new YourContext(conn))
        {
            context.Destinations.Add(new Destination {Name = "Colorado"});
            context.SaveChanges();
        }
    }
}
您需要在您的上下文中设置此选项

public YourContext(DbConnection connection)
    : base(connection, contextOwnsConnection: false)
{
}

调用DefaultConnectionFactory时从未命中-您的意思是
WebConnectionFactory
中的
CreateConnection
从未命中吗?是的,这是正确的。我可以看到断点从未命中,并且上下文是从config中的默认连接字符串填充的。还可以找到更多信息