【问题标题】:MVC5 Problems with planting seedsMVC5 播种问题
【发布时间】:2016-03-17 01:46:57
【问题描述】:

关于这个问题:MVC 5 Seed Users and Roles 我尝试设置默认用户种子。 我在 Configuration.cs 中尝试的方式是:

var passwordHash = new PasswordHasher();
string defaultPassword = passwordHash.HashPassword("SuperPassword");

context.Users.AddOrUpdate(u => u.UserName,
   new ApplicationUser
   {
       UserName = "admin@project.loc",
       Email = "admin@project.loc",
       PasswordHash = defaultPassword
   });

但是现在我遇到了无法使用命令迁移数据库的问题。不幸的是,对其他人有用的解决方案对我没有帮助。

当我尝试更新数据库时出现错误:

数据库中已经有一个名为“AspNetRoles”的对象。

我尝试使用 Add-Migration <name> -IgnoreChanges,但收到错误,即迁移仍在等待中。

之前我尝试为我的两个上下文启用迁移,但对于一个我收到以下错误消息:

不支持创建 DbModelBuilder 或从使用 Database First 或 Model First 创建的 DbContext 编写 EDMX。 EDMX 只能从不使用现有 DbCompiledModel 创建的 Code First DbContext 中获取。

其他上下文的启用迁移只是用自定义种子覆盖了我的 Configuration.cs。

【问题讨论】:

  • 您可以使用空的 UpDown 方法添加迁移。有时 EF 与数据库不同步,需要“同步”迁移才能恢复正常。即:运行Add-Migration sync,然后手动查看并删除 up/down 方法中已经存在的架构更改(即使这意味着让这些方法什么也不做)。
  • 我会尝试这样做,但如何取消挂起的迁移?现在有像 Ctrl + C 这样的快捷键,不是吗?
  • 如果取消它们,您的意思是完全摆脱它们;您只需要删除迁移文件。如果取消的意思是“这次不要跑”,我认为这是不可能的——至少在不积极对抗 EF 的情况下是不可能的(我不推荐)
  • 也就是说,当您删除迁移文件并再次运行Add-Migration 时,已删除的更改也会出现在新的迁移文件中(您可以手动删除/编辑)

标签: c# entity-framework seeding


【解决方案1】:

编辑 Up 和 Down 方法的技巧帮助了我,谢谢! 不知道我可以在这里编辑操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 2018-08-28
    • 2019-11-20
    • 2015-07-21
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多