运行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)
{
}
答案 0 :(得分:1)
是。在与DbContext
:
IDbContextFactory<T>
界面
public class YourDbContextFactory : IDbContextFactory<MyContext>
{
public MyContext Create()
{
return new MyContext(...);
}
EF调用Create()
方法,您可以根据需要设置构造函数。