Entity FrameWork初始化數據庫的四種策略


程序猿就是苦逼,每天還得分出一些時間去寫博文。天真的很熱,今天就隨便寫一點啦!

1、EF初始化數據庫的四中策略

EF可以根據項目中的模型自動創建數據庫。下面我們就分類看看Entity Framework數據庫初始化四種策略

一、 //每次運行都會創建新的數據庫

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

二、//只有第一次運行~才會創建新的數據庫~默認的方式

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

三、 //修改模型后~運行~會創建新的數據庫
   Database.SetInitializer<XXXXXContext>(new DropCreateDatabaseIfModelChanges<XXXXXContext>());

四、//使用自己配置的數據庫,請到:web.config中配置自己的連接字符串,注意連接字符串的名稱應與上下文:XXXXContext的名字一致。

     Database.SetInitializer<Models.musicStoreContext>(null);

注:以上代碼請到Global.asax中加上,加上之后會有破浪線,請添加EF的命名空間:using System.Data.Entity;

 實例代碼如下:

 

 protected void Application_Start()        

{            

//Entity Framework數據庫初始化四種策略            

//自己去配置連接字符串            

Database.SetInitializer<Models.musicStoreContext>(null);            

//默認方式 第一次創建            

Database.SetInitializer<Models.musicStoreContext>(new CreateDatabaseIfNotExists<Models.musicStoreContext>());            

//每一次都會刪除舊數據庫然后創建新的數據庫            

Database.SetInitializer<Models.musicStoreContext>(new DropCreateDatabaseAlways<Models.musicStoreContext>());            

//模型關系改變時創建新數據庫            

Database.SetInitializer<Models.musicStoreContext>(new DropCreateDatabaseIfModelChanges<Models.musicStoreContext>());             AreaRegistration.RegisterAllAreas();

           

WebApiConfig.Register(GlobalConfiguration.Configuration);            

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);            

RouteConfig.RegisterRoutes(RouteTable.Routes);            

BundleConfig.RegisterBundles(BundleTable.Bundles);            

AuthConfig.RegisterAuth();        

}

 

2、講完了上述四中策略,下面就講解一下EF的約定優先原則:

EF會盡可能的使用約定而非配置,如果在程序運行時,不按照上述四方法配置具體的數據庫連接方式,EF將按照約定創建一個連接,也就是根據模型關系創建一個數據庫。EF

創建新數據庫的過程如下:

首先EF將嘗試連接SQLserverExpress的本地實例,並且查找與上下文:XXXXContext名字相同的數據庫,如果EF找不到這個數據庫,EF則會根據約定創建一個數據庫。

好吧,講的不太好,吃飯了!餓了!

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM