Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Memaksa code-first untuk selalu menginisialisasi database yang tidak ada?

Inisialisasi dijalankan ketika Anda perlu mengakses database, jadi jika Anda ingin membuat database di aplikasi, gunakan salah satu dari yang berikut:

    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

BuatDatabaseIfNotExists Implementasi IDatabaseInitializer yang akan membuat ulang dan secara opsional menyemai ulang database dengan data hanya jika database tidak ada. Untuk menyemai database, buat kelas turunan dan ganti metode Seed.

Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());

http://msdn.microsoft.com/ en-us/library/gg679221(v=vs.103).aspx

DropCreateDatabaseIfModelChanges Implementasi IDatabaseInitializeryang akan menghapus, membuat ulang, dan secara opsional menyemai ulang database dengan data hanya jika model telah berubah sejak database dibuat. Ini dicapai dengan menulis hash model toko ke database saat dibuat dan kemudian membandingkan hash itu dengan hash yang dihasilkan dari model saat ini. Untuk menyemai database, buat kelas turunan dan ganti metode Seed.

Database.SetInitializer(New DropCreateDatabaseIfModelChanges());

http://msdn.microsoft.com/ en-us/library/gg679604(v=vs.103).aspx

JatuhkanBuatDatabaseSelalu

Implementasi IDatabaseInitializer yang akan selalu membuat ulang dan secara opsional menyemai ulang database dengan data saat pertama kali konteks digunakan dalam domain aplikasi. Untuk menyemai database, buat kelas turunan dan ganti metode Seed.

Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());

http://msdn.microsoft.com/ en-us/library/gg679506(v=vs.103).aspx

Saya sarankan Anda melihat Migrasi jika Anda ingin melacak, kembalikan perubahan yang Anda buat pada DB Anda ke keadaan sebelumnya http ://msdn.microsoft.com/hr-hr/data/jj591621 .

PERBARUI

context.Database.Initialize(true);

Untuk aplikasi MVC tambahkan bagian ke Application_Start() metode di 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);
     }    
}

Anda juga dapat menggunakan penginisialisasi khusus :

public class MyDbInit : DropCreateDatabaseAlways<MyContext>
{

}

lalu gunakan

Database.SetInitializer(new MyDbInit());

PERBARUI 2

Buat aplikasi MVC4 kosong baru bernama DeleteDBOnEveryRequest .Letakkan yang berikut ini di 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);
            }    
        }

Buat pengontrol baru bernama DatabaseController dengan dua tindakan.

Di Akses tindakan Anda menghapus DB dan mengarahkan ulang ke Dibuat ulang tindakan dari tempat Anda membuat DB seperti yang sebelumnya telah dihapus.

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();
        }
    }
}

Apakah ini yang Anda inginkan?




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konfigurasikan Lingkungan StartUp di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 7

  2. Contoh Mengonversi 'tanggal' menjadi 'waktu-waktu' di SQL Server (T-SQL)

  3. Menginstal Microsoft SQL Server 2012 Enterprise Edition dengan Paket Layanan 1

  4. SQL - amankan BIGINT ke INT

  5. MS SQL ping server eksternal