2012-07-09 124 views
42

我試圖使用實體框架數據遷移,如this post中所述。如何實現用於實體框架數據遷移的IDbContextFactory

然而,當我嘗試執行Enable-Migrations一步,我收到包管理器控制檯以下錯誤:

The target context 'MyDataContext' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory 

所以,我創建了一個在包含我DbContext類項目實現IDbContextFactory一個工廠類,但數據遷移似乎無法識別它。

有什麼我應該明確地做的,指示數據遷移使用這個工廠類?

回答

58

當我編寫我的上下文來獲取連接字符串名稱(然後使用ninject提供它)時,我也遇到了這個問題。

你已經經歷過的過程似乎是正確的,這裏是我的類實現的一個片段,如果它的任何幫助:

public class MigrationsContextFactory : IDbContextFactory<MyContext> 
{ 
    public MyContext Create() 
    { 
     return new MyDBContext("connectionStringName"); 
    } 
} 

這應該是你所需要的。

+0

感謝您的答案 - 它的工作原理。我無法想象我第一次做錯了什麼,因爲我記得自己也實施了完全相同的模式。無論如何,問題都解決了。謝謝。 – 2012-08-02 20:34:22

+0

完美,很高興它幫助:) – dougajmcdonald 2012-08-02 21:11:06

+2

你把這門課放在哪裏? – 2014-05-28 14:02:21