回到目錄
本文介紹兩個概念,防資料庫自動删除,這是由于在code first模式下,當資料實體發生變化時,會對原來資料庫進行删除,并将新資料表添加進來,但這對于我們的營運環境資料庫,是萬萬不能接受的,第二個問題是資料遷移問題,當你有新的實體建立後,如何響應到資料庫,這成為一個問題,當然實作也很簡單,我們直接使用migrations工具即可.
一 防資料庫删除
将你的業務DbInitializer的基類改成CreateDatabaseIfNotExists即可解決這個問題,這是在資料初始化時需要做的事,一般地,我們會選擇當實體有變化時,自動更新資料庫,但這樣做影響比較大,是以我們不提倡使用.
public class ManagerInitializer : CreateDatabaseIfNotExists<ManagerContext>
{
protected override void Seed(ManagerContext context)
{
//初始化代碼
}
}
二 資料遷移
這個問題也是必須要解決的,我們的實體添加後,資料庫并沒有對應的表,我們就需要使用migrations指令來對資料庫進行更新,具體操作如下
1 開啟migrations功能
enable-migrations -force
2 添加遷移版本
add-migration 名稱字尾
我們每次修改實體後,都應該使用這個add-migration來更新曆史版本
3 更新資料庫
update-database
4 程式運作成功後,如圖
這時你檢視自己的資料庫,新加的實體已經自動添加到資料庫了,呵呵.
值得注意的是,通過這種方法進行資料庫遷移,資料庫的原資料是不會丢失的,即使你在原來的表上添加字段,老資料也不會丢,新字段會有預設值.
對于EF7來說,它隻支援Code First模式,是以這種模式在dotnet架構裡将會成為主流!
補充:
最近有朋友問我在伺服器上如何進行資料的更新,即在生産環境如何使用遷移,可以讀一下我的這篇文章<EF架構~CodeFirst生産環境的Migrations>
作者:倉儲大叔,張占嶺,
榮譽:微軟MVP
QQ:853066980
支付寶掃一掃,為大叔打賞!
