2012-07-09 147 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