Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在NServiceBus端点中使用实体框架引发EntityException“;基础提供程序在打开时失败";_C#_Dependency Injection_Entity Framework 6_Autofac_Nservicebus5 - Fatal编程技术网

C# 在NServiceBus端点中使用实体框架引发EntityException“;基础提供程序在打开时失败";

C# 在NServiceBus端点中使用实体框架引发EntityException“;基础提供程序在打开时失败";,c#,dependency-injection,entity-framework-6,autofac,nservicebus5,C#,Dependency Injection,Entity Framework 6,Autofac,Nservicebus5,我有一个NServiceBus 5.2.9端点,我正在通过NServiceBus注入一个DBContext实例 配置: public class ConfigureDependencyInjection : INeedInitialization { public void Customize( BusConfiguration configuration ) { configuration.RegisterComponents( reg =>

我有一个NServiceBus 5.2.9端点,我正在通过NServiceBus注入一个DBContext实例

配置:

public class ConfigureDependencyInjection : INeedInitialization
{
    public void Customize( BusConfiguration configuration )
    {
        configuration.RegisterComponents( reg =>
        {
            reg.ConfigureComponent<MyContext>( DependencyLifecycle.InstancePerUnitOfWork );
        } );
    }
}
当我尝试访问上下文字段时,我得到EntityException:

引发异常:NServiceBus.Core.dll中的“System.Data.Entity.Core.EntityException” 其他信息:基础提供程序在打开时失败

为什么会发生这种情况?

我不确定这方面的正确寿命范围是什么。是不是
DependencyLifecycle.InstancePerUnitOfWork
?DBContext是一个UOW构造,但我不确定它是否与NServiceBus相同

传入此端点的消息始终是一条(传输)消息,因此这应该正确应用于使用InstancePerUnitOfWork作用域。

上下文实例在类中共享,因此每次访问它时,我都会锁定一个syncLock,如下所示:

lock ( syncLock )
{
    log.Info( "Get customers..." );

    var result = from c in context.Customers
    ...
    select...;
}
在考虑线程安全的同时,如何正确使用DBContext?

非常感谢你

编辑:
连接字符串/配置正常,我在同一个位置的许多地方使用相同的上下文,正如按照app.config和/或web.config配置的那样。

如何配置DbContext的连接字符串?配置在哪里?@user957902其他地方使用相同的DBContext,每个web.config的配置是可以的。如何配置DBContext的连接字符串?配置在哪里?@user957902其他地方使用相同的DBContext,每个web.config的配置是可以的。
lock ( syncLock )
{
    log.Info( "Get customers..." );

    var result = from c in context.Customers
    ...
    select...;
}