天天看點

EF架構~CodeFirst資料遷移與防資料庫删除

本文介紹兩個概念,防資料庫自動删除,這是由于在code first模式下,當資料實體發生變化時,會對原來資料庫進行删除,并将新資料表添加進來,但這對于我們的營運環境資料庫,是萬萬不能接受的,第二個問題是資料遷移問題,當你有新的實體建立後,如何響應到資料庫,這成為一個問題,當然實作也很簡單,我們直接使用migrations工具即可.

一 防資料庫删除

将你的業務DbInitializer的基類改成CreateDatabaseIfNotExists即可解決這個問題,這是在資料初始化時需要做的事,一般地,我們會選擇當實體有變化時,自動更新資料庫,但這樣做影響比較大,是以我們不提倡使用.

二 資料遷移

這個問題也是必須要解決的,我們的實體添加後,資料庫并沒有對應的表,我們就需要使用migrations指令來對資料庫進行更新,具體操作如下

1 開啟migrations功能

2 添加遷移版本

我們每次修改實體後,都應該使用這個add-migration來更新曆史版本

3 更新資料庫

4 程式運作成功後,如圖

這時你檢視自己的資料庫,新加的實體已經自動添加到資料庫了,呵呵.

值得注意的是,通過這種方法進行資料庫遷移,資料庫的原資料是不會丢失的,即使你在原來的表上添加字段,老資料也不會丢,新字段會有預設值.

對于EF7來說,它隻支援Code First模式,是以這種模式在dotnet架構裡将會成為主流!

補充: