我可以告诉Entity Framework在添加迁移期间使用哪个构造函数吗?

时间:2016-10-03 12:20:21

标签: c# entity-framework

运行add-migration

时,我遇到了一个非常奇怪的异常
System.Data.SqlClient.SqlException: Invalid column name xxx

事实证明问题是DbContext类中的构造函数。它有一些传递给它的选项,它在常规运行时使用,但这使得Entity Framework失败。如果删除了构造函数add-migration中的代码顺利航行。

所以我的问题是:我可以告诉Entity Framework在add-migration期间使用哪个构造函数吗?

编辑:

以下是构造函数的外观。这不起作用

    public MyContext()
    {
        /*EF needs me*/
    }

    public MyContext(DbContextOptions<MyContext> options) : base(options)
    {
        if (_isInitted) return;
        if (!ShouldInitInEnvironment(options)) return;
        Database.Migrate();
        PopulateDbWith(new DemoData());
        _isInitted = true;
    }

这有效:

    public MyContext(DbContextOptions<MyContext> options) : base(options)
    {
    }

1 个答案:

答案 0 :(得分:1)

是。在与DbContext

相同的项目中实施IDbContextFactory<T>界面
public class YourDbContextFactory : IDbContextFactory<MyContext>
{
    public MyContext Create()
    {
        return new MyContext(...);
    }

EF调用Create()方法,您可以根据需要设置构造函数。