प्रारंभकर्ता तब निष्पादित किया जाता है जब आपको डेटाबेस तक पहुंचने की आवश्यकता होती है, इसलिए यदि आप ऐप पर डेटाबेस बनाना चाहते हैं तो निम्न में से कुछ भी उपयोग करें:
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 IDatabaseInitializer का एक कार्यान्वयन जो डेटाबेस को फिर से बनाएगा और वैकल्पिक रूप से डेटा के साथ डेटाबेस को फिर से सीड करेगा यदि डेटाबेस मौजूद नहीं है। डेटाबेस को सीड करने के लिए, एक डिराइव्ड क्लास बनाएं और सीड मेथड को ओवरराइड करें।
Database.SetInitializer<MyContext>(new CreateDatabaseIfNotExists<MyContext>());
http://msdn.microsoft.com/ en-us/लाइब्रेरी/gg679221(v=vs.103).aspx
DropCreateDatabaseIfModelChanges IDatabaseInitializer का एक कार्यान्वयन, जो डेटाबेस को हटाएगा, फिर से बनाएगा, और वैकल्पिक रूप से डेटा के साथ डेटाबेस को फिर से सीड करेगा, यदि डेटाबेस बनने के बाद से मॉडल बदल गया है। यह स्टोर मॉडल के हैश को डेटाबेस में लिखते समय प्राप्त किया जाता है जब इसे बनाया जाता है और फिर उस हैश की तुलना वर्तमान मॉडल से उत्पन्न एक के साथ की जाती है। डेटाबेस को सीड करने के लिए, एक डिराइव्ड क्लास बनाएं और सीड मेथड को ओवरराइड करें।
Database.SetInitializer (नया DropCreateDatabaseIfModelChanges ());
http://msdn.microsoft.com/ en-us/लाइब्रेरी/gg679604(v=vs.103).aspx
DropCreateDatabaseAlways
IDatabaseInitializer का एक कार्यान्वयन जो हमेशा डेटा के साथ डेटाबेस को फिर से बनाएगा और वैकल्पिक रूप से फिर से बीज देगा जब पहली बार एप्लिकेशन डोमेन में एक संदर्भ का उपयोग किया जाता है। डेटाबेस को सीड करने के लिए, एक डिराइव्ड क्लास बनाएं और सीड मेथड को ओवरराइड करें।
Database.SetInitializer<MyContext>(new DropCreateDatabaseAlways<MyContext>());
http://msdn.microsoft.com/ en-us/लाइब्रेरी/gg679506(v=vs.103).aspx
मेरा सुझाव है कि आप माइग्रेशन . देखें यदि आप ट्रैक करना चाहते हैं, तो अपने DB में किए गए परिवर्तनों को पिछली स्थिति में वापस लाएं http ://msdn.microsoft.com/hr-hr/data/jj591621 ।
अपडेट करें
context.Database.Initialize(true);
MVC एप्लिकेशन के लिए Application_Start()
. में एक सेक्शन जोड़ें 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);
}
}
इसके अलावा आप एक कस्टम इनिशियलाइज़र का उपयोग कर सकते हैं:
public class MyDbInit : DropCreateDatabaseAlways<MyContext>
{
}
और फिर उपयोग करें
Database.SetInitializer(new MyDbInit());
अपडेट 2
DeleteDBOnEveryRequest नामक एक नया खाली MVC4 एप्लिकेशन बनाएं .निम्नलिखित को 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);
}
}
डेटाबेस नियंत्रक . नामक एक नया नियंत्रक बनाएं दो क्रियाओं के साथ।
पहुंच . में कार्रवाई आप DB को हटाते हैं और पुन:निर्मित . पर रीडायरेक्ट करते हैं कार्रवाई जहां से आप एक डीबी बनाते हैं क्योंकि इसे पहले हटा दिया गया था।
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();
}
}
}
क्या आप यही चाहते थे?