ef4.4 code first数据库新增时 初始化表数据不成功
Migrations,Configuration文件如下,然后Database.SetInitializer(newMigrateDatabaseToLatestVers...
Migrations,Configuration文件如下,然后
Database.SetInitializer(new MigrateDatabaseToLatestVersion<PermDbContext, Configuration>());完成调用初始化,为什么数据没有新增到数据库呢,但是通过 package console 的命令会成功,求解
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
protected override void Seed(NPS.Models.PermDbContext 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" }
// );
//
//新增一条用户数据,在数据库初始化时不会新增,通过package console(Update-Database)可以新增
User usr = new User
{
LoginId = "admin",
Password = "1",
ConfirmPwd = "1",
UName = "administrator",
CreateTime = DateTime.Now,
Status = true,
CreateUser = "admin"
};
DbSet<User> userSet = context.Set<User>();
userSet.Add(usr);
context.User.AddOrUpdate(usr);
context.SaveChanges();
} 展开
Database.SetInitializer(new MigrateDatabaseToLatestVersion<PermDbContext, Configuration>());完成调用初始化,为什么数据没有新增到数据库呢,但是通过 package console 的命令会成功,求解
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
protected override void Seed(NPS.Models.PermDbContext 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" }
// );
//
//新增一条用户数据,在数据库初始化时不会新增,通过package console(Update-Database)可以新增
User usr = new User
{
LoginId = "admin",
Password = "1",
ConfirmPwd = "1",
UName = "administrator",
CreateTime = DateTime.Now,
Status = true,
CreateUser = "admin"
};
DbSet<User> userSet = context.Set<User>();
userSet.Add(usr);
context.User.AddOrUpdate(usr);
context.SaveChanges();
} 展开
1个回答
展开全部
seed函数内容添加的时候,你的codefirst 代码没有更新,所以Seed函数没有被调用。
Migration只检查数据库的机构有没有发生变化,如果发生了变化,它会调用Seed方法重新初始化数据库。但是如果数据库已经存在而且与你的当前代码一致,Migration就不会再调用seed方法了。
Migration只检查数据库的机构有没有发生变化,如果发生了变化,它会调用Seed方法重新初始化数据库。但是如果数据库已经存在而且与你的当前代码一致,Migration就不会再调用seed方法了。
更多追问追答
追问
我直接把数据库重新删掉,也不会初始化数据叱。。还有4.1的时候我用Database.SetInitializer(new DropCreateDatabaseIfModelChanges());
实体有变化,直接删掉重新更新数据库,4.4怎么用这个策略没用了。。必须要在package console里更新数据库吗
追答
你可以在Global.asax.cs里面的Application_Start()里面添加一段代码:
protected void Application_Start()
{
var migrator = new DbMigrator(new Configuration());
migrator.Update();
。。。
}
然后再试试。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询