为什么自添加Effort.EF6单元测试后,我可以不再运行我的C#MVC网站了?

asp.net-mvc c# effort entity-framework structuremap

我的C#MVC网站使用StructureMap进行依赖注入。

我的DbContext的构造函数过去如下。

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

现在我已经添加了Effort.EF6以进行单元测试,我不得不将我的DbContext构造函数更改为此。

public class PortalEntityModel : DbContext
{
    public PortalEntityModel(DbConnection connection) : base(connection, true)
    {
    }
}

虽然我现在可以对我的代码进行单元测试我不能再运行网站了,因为自改变后StructureMap无法创建。

没有注册默认实例,无法自动确定类型'System.Data.Common.DbConnection'

我怎样才能告诉StructureMap如何像以前一样初始化我的DBContext,同时允许Effort.EF6也能工作?

编辑 -

StructureMap是在网站启动时启动的,如下所示......

    public static void Start()
    {
        IContainer container = IoC.Initialize();
        StructureMapDependencyScope = new StructureMapDependencyScope(container);
        DependencyResolver.SetResolver(StructureMapDependencyScope);
        DynamicModuleUtility.RegisterModule(typeof(StructureMapScopeModule));
    }

它在网站启动时自动启动

[assembly: PreApplicationStartMethod(typeof(StructuremapMvc), "Start")]
[assembly: ApplicationShutdownMethod(typeof(StructuremapMvc), "End")]

热门答案

我设法搞清楚了。更改DBContext结构图的构造函数时无法将其传递给DbConnection。

所以我现在有两个构造函数,并在结构图设置中添加了一些逻辑,告诉它网站应该使用哪个构造函数。

c .For()。Use()。SelectConstructor(()=> new PortalEntityModel());



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因