2016-05-27 29 views
4

我正在嘗試運行自定義DbContext的遷移。提供IDbContextFactory的實現。但是哪裏?

var migrationConfiguration = new DbMigrationsConfiguration { AutomaticMigrationsEnabled = true }; 
migrationConfiguration.ContextType = typeof(DataContext); 
var migrator = new DbMigrator(migrationConfiguration); 
migrator.Update(); 

此拋出遷移異常,因爲DataContext沒有實現參數的構造函數:

目標上下文 'System.Data.Entity.DbContext' 不是構造的。添加一個默認構造函數或提供IDbContextFactory的實現。

構造函數DataContext需要參數,但我已經創建了IDbContextFactory<DataContext>。如何告訴DbMigrator,使用IDbContextFactory<DataContext>的現有實現?

+0

別的東西是錯在這裏 - 注意' System.Data.Entity.DbContext'(不是'DataContext')。 –

+0

顯示您的上下文。 http://stackoverflow.com/questions/11395283/how-to-implement-idbcontextfactory-for-use-with-entity-framework-data-migrations –

回答

3

IDbContextFactory<>已在相同的程序集中並提供無參數構造函數。

另一種方式是繼承DbConfiguration和集廠無參數的構造函數派生類的(我使用MEF擺脫IDbContextFactory派生類):

public class DataContextConfiguration : DbConfiguration 
{ 
    public DataContextConfiguration() 
    { 
     SetContextFactory(() => (DataContext)new CompositionManager().Container.GetExportedValue<IDataContextFactory>().Create()); 
    } 
} 
+0

缺乏無參數構造函數是我的問題,加入它解決它。 – Mardoxx