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