[英]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.