我可以告诉实体框架在添加迁移期间使用哪个构造函数吗?
本文关键字:构造函数 实体 框架 迁移 添加 我可以 | 更新日期: 2023-09-27 18:11:28
在运行add-migration
System.Data.SqlClient.SqlException: Invalid column name xxx
结果是问题出在DbContext
类的构造函数上。它有一些传递给它的选项,它在常规运行时使用,但这会使实体框架失败。如果a删除了构造函数add-migration
中的代码,则运行顺利。
所以我的问题是:我可以告诉实体框架在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)
{
}
是。在与DbContext
相同的项目中实现IDbContextFactory<T>
接口:
public class YourDbContextFactory : IDbContextFactory<MyContext>
{
public MyContext Create()
{
return new MyContext(...);
}
Create()
方法由EF调用,您可以根据自己的喜好设置构造函数。