我在运行单元测试时遇到以下错误(支持“MyContext”上下文的模型自数据库创建以来已更改)
在我的上下文构造函数中,我设置了
Database.SetInitializer<MyContext>(null);
在我的单元测试中,我正在模拟上下文。我也将这段代码添加到单元测试中,但它仍然失败。除了 Database.SetInitializer<MyContext>(null);
之外还有什么需要做的吗?
我的上下文在这里
public class MyContext : DbContext
{
public MyContext () : base("MyContext")
{
Database.SetInitializer<MyContext>(null);
}
public virtual DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable("Users");
}
}
我在单元测试中的模拟
var _context = new Mock<MyContext>();
Database.SetInitializer<MyContext>(null);
_classUnderTest = new Repo(_context.Object);
这里报错
_context.Entry(user).State = EntityState.Added;
最佳答案
我不确定我是否理解了这个问题,但如果您使用 Entity Framework 代码优先方法,在模型更改后,尝试在您的应用程序中启用迁移。它可以使用包管理器控制台来完成..
有关详细信息,请参阅此链接。 MSDN link
关于c# - 自数据库创建以来支持 'MyContext' 上下文的模型已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36179542/