为什么,既然付出了努力.EF6单元测试可以我不再运行我的c# MVC网站
本文关键字:不再 再运行 我的 网站 MVC 单元测试 付出 EF6 努力 为什么 | 更新日期: 2023-09-27 18:09:54
我的c# MVC网站使用StructureMap进行依赖注入。
我的DbContext的构造函数以前是这样的。
public class PortalEntityModel : DbContext
{
public PortalEntityModel() : base("name=PortalEntityModel")
{
}
}
现在我添加了努力。为了进行单元测试,我不得不将DbContext构造函数更改为:
public class PortalEntityModel : DbContext
{
public PortalEntityModel(DbConnection connection) : base(connection, true)
{
}
}
现在我可以对代码进行单元测试了。我不能再运行网站了,因为StructureMap无法创建。
没有默认实例已注册,不能自动确定类型'System.Data.Common.DbConnection'
我如何告诉StructureMap如何像以前一样初始化我的DBContext,同时允许努力。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。
所以我现在有了两个构造函数,并在structuremap设置中添加了一些逻辑,告诉它网站应该使用哪个构造函数。
.SelectConstructor .Usec.For()()(() =>新PortalEntityModel ());