簡體   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