gpt4 book ai didi

entity-framework - 自数据库创建以来,支持 'DataContext' 上下文的模型已更改

转载 作者:行者123 更新时间:2023-12-04 00:13:19 24 4
gpt4 key购买 nike

我正在尝试将 Code First 与迁移一起使用。即使我的模型当前没有变化,我也遇到了一个异常(exception)。当我添加迁移时,up 和 down 为空,但我收到一个运行时错误,消息如下:

An exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll but was not handled in user code

Additional information: The model backing the 'MyDataContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?



我的架构如下:
  • DataAccess 项目,包括上下文、流体配置和迁移代码
  • 包含 poco 类的模型项目
  • Web API 和 MVC 项目,每个项目都在各自的 web.config 文件中包含连接字符串。

  • 另外我有以下代码:

    数据库初始化器
    public static MyDataContext Create()
    {
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDataAccess.MyDataContext, MyDataAccess.Migrations.Configuration>());
    return new MyDataContext(ConfigurationManager.ConnectionStrings["MyDataContext"].ConnectionString, null);
    }

    我从 AutomaticMigrationsEnabled = false; 开始。在迁移配置构造函数中,因为据我所知,这将允许(并要求)我对何时应用迁移有更多的控制。我也尝试将其设置为 true 但结果相同。

    我在收到此错误时添加了一个新的迁移,并且 Up 方法为空。我将数据库更新为这个新的迁移,并在 _migrationHistory 表中创建了一条记录,但是当我尝试运行应用程序时仍然收到错误消息。此外,种子数据未添加到数据库中。
    protected override void Seed(MyDataAccess.MyDataContext context)
    {
    IdentityResult ir;

    var appDbContext = new ApplicationDbContext();
    var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(appDbContext));
    ir = roleManager.Create(new IdentityRole("Admin"));
    ir = roleManager.Create(new IdentityRole("Active"));
    ir = roleManager.Create(new IdentityRole("InActive"));

    var userNamager = new UserManager<User>(new UserStore<User>(appDbContext));

    // assign default admin
    var admin = new User { UserName = "administrator", Email = "myAdmin@gmail.com" };
    ir = userNamager.Create(admin, "myp@55word");

    ir = userNamager.AddToRole(admin.Id, "Admin");
    }

    哪里
    public class ApplicationDbContext : IdentityDbContext<User>
    {
    public ApplicationDbContext()
    : base("MyDataContext", throwIfV1Schema: false)
    {
    }
    ...

    问题:如果 Add-Migration 在模型中没有看到任何变化,为什么我在运行时会收到此错误?为什么种子代码没有被命中?我该如何解决这个问题,或者如果无法确定,我如何进一步确定根本原因?

    最佳答案

    这对我有用。

    转到包管理器控制台并运行 - Update-Database -force

    关于entity-framework - 自数据库创建以来,支持 'DataContext' 上下文的模型已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276571/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com