基于MVC5示例项目,我正在尝试学习处理迁移的正确方法。
在根目录中,我有一个名为“DbContexts”的文件夹,其中包含两个上下文。
第一个:IdentityContext.cs
public class IdentityContext : IdentityDbContext<ApplicationUser>
{
public IdentityContext()
: base("DefaultConnection")
{ }
}
然后我有一个名为IdentityMigrations的文件夹,其中包含Configuration.cs
internal sealed class Configuration : DbMigrationsConfiguration<TryFive.Web.DbContexts.IdentityContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
MigrationsDirectory = @"DbContexts\IdentityMigrations";
}
protected override void Seed(TryFive.Web.DbContexts.IdentityContext context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" },
// new Person { FullName = "Brice Lambson" },
// new Person { FullName = "Rowan Miller" }
// );
//
}
}
然后我有类似属性的MyContexts。
当我尝试运行“Update-Database”命令时,收到以下错误消息:The type 'TryFive.Web.DbContexts.IdentityContext' does not inherit from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'. Migrations configuration types must extend from 'System.Data.Entity.Migrations.DbMigrationsConfiguration'.
有关如何解决这个或更好的方法来做这个DbContext的想法?
答案 0 :(得分:2)
建议:如果你正在做一个示例项目来学习如你所说的迁移,请坚持使用一个DbContext。保持简单 - 将您的实体合并为一个继承自IdentityDbContext<ApplicationUser>
删除您创建的现有迁移文件夹 - 并在删除第二个DbContext后重新启用“enable-migrations”。这将帮助您继续学习迁移,而不是学习如何在一个项目中使用两个DbContext。
另外,@ Lajos,我不确定你在谈论哪个MVC,但我的DbContext从未从DbMigrationsConfiguration继承 - 它们继承自DbContext或IdentityDbContext。您所指的是在项目上发出“enable-migrations”时生成的MigrationsConfiguration类。它用于生成迁移和播种数据。