2016-10-01 53 views
0

我的C#MVC网站使用StructureMap进行依赖注入。为什么添加Effort.EF6单元测试后,我不能运行我的C#MVC网站?

我的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,同时允许工作。 EF6也可以工作?

编辑 - 当网站启动如下

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

你能告诉我们如何使用StructureMap注册PortalEntityModel吗? – YuvShap

+1

你有一个DbConnection的依赖,你很可能还没有注册它。结果,StructureMap不知道如何解析PortalEntityModel。 –

+0

@SomeUser,我已经添加了用于初始化结构映射到代码 –

回答

0
它会自动启动

StructureMap开始......

我设法图出来。更改DBContext结构图的构造函数时,无法将其传递给DbConnection。

所以我现在有两个构造函数,并在结构映射设置中添加了一些逻辑,告诉它该网站应该使用哪个构造函数。 ()。SelectConstructor(()=> new PortalEntityModel());()。

相关问题