Bộ khởi tạo được thực thi khi bạn cần truy cập cơ sở dữ liệu, vì vậy nếu bạn muốn tạo cơ sở dữ liệu trên ứng dụng, hãy bắt đầu sử dụng bất kỳ điều gì sau đây:
context.Database.Initialize(true); //If set to true the initializer is run even if it has already been run.
context.Database.Create()
http://msdn.microsoft.com/en-us/library/system.data.entity.database.initialize(v=vs.103).aspx
CreateDatabaseIfNotExists Việc triển khai IDatabaseInitializer sẽ tạo lại và tùy chọn hạt giống lại cơ sở dữ liệu chỉ với dữ liệu nếu cơ sở dữ liệu không tồn tại. Để khởi tạo cơ sở dữ liệu, hãy tạo một lớp dẫn xuất và ghi đè phương thức Seed.
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
http://msdn.microsoft.com/ vi-us / library / gg679221 (v =vs.103) .aspx
DropCreateDatabaseIfModelChanges Việc triển khai IDatabaseInitializerthat sẽ xóa, tạo lại và tùy chọn hạt giống lại cơ sở dữ liệu chỉ với dữ liệu nếu mô hình đã thay đổi kể từ khi cơ sở dữ liệu được tạo. Điều này đạt được bằng cách ghi một băm của mô hình cửa hàng vào cơ sở dữ liệu khi nó được tạo và sau đó so sánh băm đó với một băm được tạo từ mô hình hiện tại. Để khởi tạo cơ sở dữ liệu, hãy tạo một lớp dẫn xuất và ghi đè phương thức Seed.
Database.SetInitializer (DropCreateDatabaseIfModelChanges ()) mới;
http://msdn.microsoft.com/ vi-us / library / gg679604 (v =vs.103) .aspx
DropCreateDatabaseAlways
Việc triển khai IDatabaseInitializer sẽ luôn tạo lại và tùy chọn hạt giống lại cơ sở dữ liệu với dữ liệu lần đầu tiên ngữ cảnh được sử dụng trong miền ứng dụng. Để khởi tạo cơ sở dữ liệu, hãy tạo một lớp dẫn xuất và ghi đè phương thức Seed.
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
http://msdn.microsoft.com/ en-us / library / gg679506 (v =vs.103) .aspx
Tôi khuyên bạn nên xem Di chuyển nếu bạn muốn theo dõi, hãy hoàn nguyên những thay đổi bạn đã thực hiện với DB của mình về trạng thái trước đó http ://msdn.microsoft.com/hr-hr/data/jj591621 .
CẬP NHẬT
context.Database.Initialize(true);
Đối với ứng dụng MVC, hãy thêm một phần vào Application_Start()
trong Global.asax
protected void Application_Start() {
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
// Forces initialization of database on model changes.
using (var context= new MyContext()) {
context.Database.Initialize(force: true);
}
}
Ngoài ra, bạn có thể sử dụng trình khởi tạo tùy chỉnh:
public class MyDbInit : DropCreateDatabaseAlways<MyContext>
{
}
và sau đó sử dụng
Database.SetInitializer(new MyDbInit());
CẬP NHẬT 2
Tạo một ứng dụng MVC4 trống mới có tên là DeleteDBOnEveryRequest .Đặt phần sau vào Global.asax Application_start
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
Database.SetInitializer<BlogContext>(new DropCreateDatabaseAlways<BlogContext>());
using (var context = new BlogContext())
{
context.Database.Initialize(force: true);
}
}
Tạo bộ điều khiển mới có tên DatabaseController với hai hành động.
Trong Quyền truy cập hành động bạn xóa DB và chuyển hướng đến Đã tạo lại hành động từ nơi bạn tạo DB vì nó đã bị xóa trước đó.
namespace DeleteDBOnEveryRequest.Controllers
{
public class DatabaseController : Controller
{
public ActionResult Access()
{
using (var context = new BlogContext())
{
context.Database.Delete();
}
return RedirectToAction("Recreated");
}
public ActionResult Recreated()
{
using (var context = new BlogContext())
{
context.Database.Initialize(force: true);
}
return View();
}
}
}
Đây có phải là những gì bạn muốn?