繁体   English   中英

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

[英]Why Since Adding Effort.EF6 Unit Tests can I no longer run my C# MVC Website?

我的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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM