為什麼自添加Effort.EF6單元測試後,我可以不再運行我的C#MVC網站了?


我的C#MVC網站使用StructureMap進行依賴注入。

我的DbContext的構造函數過去如下。

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

現在我已經添加了Effort.EF6以進行單元測試,我不得不將我的DbContext構造函數更改為此。

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

雖然我現在可以對我的代碼進行單元測試我不能再運行網站了,因為自改變後StructureMap無法創建。

沒有註冊默認實例,無法自動確定類型'System.Data.Common.DbConnection'

我怎樣才能告訴StructureMap如何像以前一樣初始化我的DBContext,同時允許Effort.EF6也能工作?

編輯 -

StructureMap是在網站啟動時啟動的,如下所示......

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

它在網站啟動時自動啟動

public class PortalEntityModel : DbContext
{
    public PortalEntityModel() : base("name=PortalEntityModel")
    {
    }
}

熱門答案

我設法搞清楚了。更改DBContext結構圖的構造函數時無法將其傳遞給DbConnection。

所以我現在有兩個構造函數,並在結構圖設置中添加了一些邏輯,告訴它網站應該使用哪個構造函數。

c .For()。Use()。SelectConstructor(()=> new PortalEntityModel());





許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因