我的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")]
答案 0 :(得分:0)
我设法搞清楚了。更改DBContext结构图的构造函数时无法将其传递给DbConnection。
所以我现在有两个构造函数,并在结构图设置中添加了一些逻辑,告诉它网站应该使用哪个构造函数。
c.For()。Use()。SelectConstructor(()=> new PortalEntityModel());