相关疑难解决方法(0)

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

我正在尝试使用Code First和Migrations.即使我的模型目前没有变化,我也会遇到异常.当我添加一个迁移时,up和down都是空的,但是我收到一条运行时错误消息,如下所示:

EntityFramework.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理

附加信息:自创建数据库以来,支持"MyDataContext"上下文的模型已更改.考虑使用代码优先迁移来更新数据库(http://go.microsoft.com/fwlink/

我的架构如下:

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

另外,我有以下代码:

DbInitializer

public static MyDataContext Create()
{
   Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDataAccess.MyDataContext, MyDataAccess.Migrations.Configuration>());
   return new MyDataContext(ConfigurationManager.ConnectionStrings["MyDataContext"].ConnectionString, null);
}
Run Code Online (Sandbox Code Playgroud)

我开始使用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 = …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first ef-migrations

11
推荐指数
2
解决办法
2万
查看次数