文章出處

回到目錄

本文介紹兩個概念,防數據庫自動刪除,這是由于在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>

 

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()