c# - 自数据库创建以来支持 'MyContext' 上下文的模型已更改

标签 c# entity-framework ef-code-first code-first

我在运行单元测试时遇到以下错误(支持“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/

相关文章:

c# - 如何使软件安全?

c# - Entity Framework

entity-framework - 如何从 Entity Framework 4.3 升级到 EF 5

.net - 使用 Entity Framework 代码优先时,SQL Server顺序向导为键

c# - Code First - 外键引用在分配 Id 时未加载

c# - 多线程异常和处置。为什么 Dispose 没有调用?

c# - 如何在 HTTP 触发器 Azure Function 3.x 中获取操作 IS。附图片

c# - 多列的 EF 值转换

sql-server - 如何将代码优先迁移应用到 Azure 中的数据库?

c# - DDD 和 C# - 限制对子实体的访问