Entity framework 当需要对模型进行更改时,EF首先编码,有没有办法不删除DB?
我试图先掌握代码,到目前为止,每次对模型进行更改时,我都需要删除并重新创建数据库。数据库中当前的数据是什么?我只是觉得我每次都要这么做很烦人,而且不是一个好的web方法,除非你100%确定你永远不必做任何更改,比如在表中添加一个新列。是否有其他方法可以防止这种情况发生?默认情况下,数据库初始值设定项设置为DropCreateDatabaseIfModelChanges。可以将数据库初始值设定项设置为null,以避免重新创建Entity framework 当需要对模型进行更改时,EF首先编码,有没有办法不删除DB?,entity-framework,ef-code-first,Entity Framework,Ef Code First,我试图先掌握代码,到目前为止,每次对模型进行更改时,我都需要删除并重新创建数据库。数据库中当前的数据是什么?我只是觉得我每次都要这么做很烦人,而且不是一个好的web方法,除非你100%确定你永远不必做任何更改,比如在表中添加一个新列。是否有其他方法可以防止这种情况发生?默认情况下,数据库初始值设定项设置为DropCreateDatabaseIfModelChanges。可以将数据库初始值设定项设置为null,以避免重新创建 Database.SetInitializer<YourConte
Database.SetInitializer<YourContext>(null);
Database.SetInitializer(null);
另一个选项是用来更新数据库而不重新创建它。
< P>如果您试图在开发期间维护测试数据,请考虑使用IDATABASE初始化器的种子方法(即,数据库初始化器)。种子方法在初始化期间(应用任何模型更改后)被调用,并将填充您指定的任何测试数据 指定要使用哪个初始值设定项的最佳方法是在global.asax.cs文件中 下面是一个例子: [Global.asax.cs]Database.SetInitializer<MyApplicationDbContext>(new MyApplicationDbContextInitializer());
public class MyApplicationDbContextInitializer : DropCreateDatabaseAlways<MyApplicationDbContext>
{
protected override void Seed(TitleDB context)
{
context.Products.Add(new Product { Id = 1, Name = "Foobar XL" });
context.Products.Add(new Product { Id = 2, Name = "Foobar LG" });
context.Products.Add(new Product { Id = 3, Name = "Foobar MD" });
context.SaveChanges();
base.Seed(context);
}
}
Database.SetInitializer(新的myapplicationdbcontdeInitializer());
[myapplicationdbcontdeInitializer.cs]
Database.SetInitializer<MyApplicationDbContext>(new MyApplicationDbContextInitializer());
public class MyApplicationDbContextInitializer : DropCreateDatabaseAlways<MyApplicationDbContext>
{
protected override void Seed(TitleDB context)
{
context.Products.Add(new Product { Id = 1, Name = "Foobar XL" });
context.Products.Add(new Product { Id = 2, Name = "Foobar LG" });
context.Products.Add(new Product { Id = 3, Name = "Foobar MD" });
context.SaveChanges();
base.Seed(context);
}
}
公共类MyApplicationDbContextInitializer:DropCreateDatabaseAlways
{
受保护的覆盖无效种子(标题B上下文)
{
Add(新产品{Id=1,Name=“Foobar XL”});
Add(新产品{Id=2,Name=“Foobar LG”});
Add(新产品{Id=3,Name=“Foobar MD”});
SaveChanges();
种子(上下文);
}
}
对不起,我应该在哪里添加此行?另外,如果我向模型中添加一个新属性,它会将其添加到数据库中并维护其中的当前数据吗?只要尝试一下,它就可以完美地工作。这正是我需要的。谢谢。我在这里提供的答案也可能对您早期的EF-CF旅程有所帮助。