Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Bắt buộc người dùng viết mã đầu tiên luôn khởi tạo cơ sở dữ liệu không tồn tại?

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?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách định cấu hình thư cơ sở dữ liệu trong SQL Server

  2. SQL Server:Truy vấn XPATH không thành công

  3. Làm cách nào để bạn tạo trường boolean có / không trong máy chủ SQL?

  4. Làm cách nào để lấy Thời gian từ định dạng DateTime trong SQL?

  5. So sánh chuỗi phân biệt chữ hoa chữ thường trong SQL