-1

我的數據(EF 6.1.3)類項目中有一個現有的本地數據庫和一個DbContext實例。我想將此當前模式作爲初始模式。當我運行此命令:EF6.1啓用遷移不起作用

enable-migrations 

的文件夾遷移和類(類型MyProject.Data.Migrations.Configuration)命名的配置已經在類項目MyProject.Data創建(因爲它應該)。不過,我收到在控制檯窗口下一個錯誤:

The migrations configuration type 'MyProject.Data.Migrations.Configuration' was not be found in the assembly 'MyProject.Data'. 

是什麼奇怪的是坐落在這個項目中,具有完全相同的命名空間。我可以提到的一個具體實現是,我的DbContext沒有引用應用程序配置文件中的連接字符串,它具有私有構造函數,並且它通過靜態Create方法從自定義應用程序配置文件接收連接字符串。

public MyEntities : DbContext 
{ 
    private ctor(string connectionString) : base(connectionString) { ... } 

    public static MyEntities Create(string connectionString) 
    { 
     return new MyEntities(connectionString); 
    } 
} 

有誰知道爲什麼會發生這種情況?我無法移動到下一步並添加初始配置遷移。

+1

您是否在包管理器控制檯中選擇了正確的默認項目? – jrummell

+0

@jrummell是的,我有,正如我所說,配置類位於正確的項目。但是,命令行由於某種原因未找到它。人們會認爲如果它已經添加配置文件,它也會發現它到同一個位置,但它不會。 – Goran

+0

您可能需要添加公共默認構造函數。 – jrummell

回答

2

EF Migrations需要能夠創建DbContext的實例。添加一個公共的默認構造函數。默認情況下,它會在啓動項目的配置文件中查找與您的上下文具有相同名稱的連接字符串。您可以通過使用不同的連接字符串名稱調用base()來更改它。

public MyEntities : DbContext 
{ 
    public MyEntities() : base("DefaultConnection") {} 
}