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)
也不能正常工作。
听起来EF找错项目了。
确保包管理器控制台窗口中的"默认项目"下拉框设置为包含DbContext类的项目。这告诉包管理器控制台要对哪个项目执行命令。