Migrations ASP NET MVC5

本文关键字:MVC5 NET ASP Migrations | 更新日期: 2023-09-27 18:08:19

我已经创建了我的项目并配置了用户实体。

我在我的项目中启用了迁移。为了测试这一点,我简单地添加了一个用户,然后通过浏览器登录到asp.net应用程序。

我添加了更多的实体和它们相应的DbSet<T>。我创建了一个控制器来管理这些实体

我去Update-Database使用这个种子方法:

var manager = new UserManager<ChevieUser>(new UserStore<ChevieUser>(new DefaultContext()));
    var people = new List<ChevieUser>
    {
        new ChevieUser { FirstName = "blah", LastName = "blah", UserName="cliningt", Email="blah.blah@blah.co.uk" }
    };
    people.ForEach(x => manager.Create(x, "password"));
    context.SaveChanges();
    var projects = new List<Project>
    {
        new Project { Name= "MLounge", ProposedDuration = DateTime.Now.AddDays(14), Users = new List<ChevieUser>(){context.Users.FirstOrDefault()}  }
    };
    projects.ForEach(x => context.Projects.AddOrUpdate(p => p.Name, x));
    context.SaveChanges();
    //var targets = new List<Target>
    //{
    //    new Target {Name="Initial Meeting", CompletionDate = DateTime.Now.AddDays(1), ProjectId = context.Projects.FirstOrDefault().Id},
    //    new Target {Name="Pricing", CompletionDate = DateTime.Now.AddDays(2), ProjectId = context.Projects.FirstOrDefault().Id},
    //    new Target {Name="Layout", CompletionDate = DateTime.Now.AddDays(3), ProjectId = context.Projects.FirstOrDefault().Id}
    //};
    //targets.ForEach(x => context.Targets.AddOrUpdate(p => p.Name, x));
    //context.SaveChanges();

它创建了一个项目,但是该项目的Id为空Guid。即使我使用相同的代码来Id属性,因为我已经完成了其他项目。

[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]

目标代码被注释掉的原因是它不能添加三个具有相同Id的目标,因为上面的代码不能正常工作。

所以我想我会用最新的nuget包更新我的MVC项目。这是成功的。然而,当我来到Update-Database时,有一个错误,我的项目中没有启用迁移!

然后在尝试Enable-Migrations之后,它返回了一个错误,没有上下文!

从一切都很好,到整个项目搞砸了,真是太奇怪了。它的镜头是,迁移似乎神奇地禁用了自己,但即使当它工作时,DatabaseGenerated(DatabaseGeneratedOption.Identity)也不能正常工作。

Migrations ASP NET MVC5

听起来EF找错项目了。

确保包管理器控制台窗口中的"默认项目"下拉框设置为包含DbContext类的项目。这告诉包管理器控制台要对哪个项目执行命令。