ABP Migration(數據庫遷移)


      今天准備說說EntityFramework 6.0+,它與我之前所學的4.0有所區別,自從4.1發布以來,code first 被許多人所鍾愛,Dbcontext API也由此時而生。早在學校的

時候就聽老師說過Db first,Model first 和 Code first ,沒怎么去注意,最近我直接從Db first 跳到了 Code first,去了解了下,個人覺得Model first 和 Code first 沒多

大區別,英文好的人看以看看http://stackoverflow.com/questions/5446316/code-first-vs-model-database-first,在這里我也稍微解釋下,code first 最大優點就是

代碼干凈簡潔,可以使用代碼完全控制數據庫相關的操作,而不需要到管理系統里面建庫建表,也沒有那些EntityFramework 4.0里面的那些自動生成的XML文件(看着就頭

疼,因為不是自己寫的代碼),改完下表又得重新搭建一下實體框架(真的很麻煩啊)。但是任何強大的東西都有其一定的弊端,正因為使用如此簡單,所以容易造成數據的丟

失,特別是像我這種從Db frist 直接跳到 code first 的人如果沒有特別了解,就去跟那些已經使用EF6的人一起做事。這些不是重點,重點Migration(數據庫遷移),

數據庫遷移對於企業級應用程序來說是再正常不過了吧。拿我們Abp的例子來說吧,首先到ABP官網下載項目https://github.com/aspnetboilerplate,雙擊那個NuGet包管

理.exe,使用VS2012+打開項目, 在VS工具欄里找到工具==》Nuget程序包管理器==》程序包管理器控制台,先注意看控制台上面的默認項目是不是EntityFramework層,

如果不是則選擇它,

,改成下面這樣

 

在控制台里面輸入:Install-Package EntityFramework 命令,

這樣最新版的EF就安裝到了你的EntityFramework層,是不是很簡單,然后建表,先改下你的配置文件

當然不改的話也是可以的,但是不安全,例子給的是信任連接,也就是說不需要用戶名和密碼就可以進到你的數據庫,然后又到了輸入命令的時候了,

如果確定命令沒有輸入錯誤,找3個點:1.默認項目是不是EntityFramework,2.啟動項目是不是UI層,3.如果前面兩個都沒問題,那么請關掉VS,重新打開項目,

讓VS重新加載下項目,不要問我為什么,我也不知道(大神告訴我的),只能自己去猜測。注意看我用紅線畫出來的東西,等下告訴你為什么 ,這樣表就建好了,

,那個People表是根據我們例子里面的Person類生成的,

看到那個Table特性,就知道為什么生成的表名是People了,凡是加上Table特性的實體類,在運行Update-database命令的時候就會生成對應的表,它的實現原理是反射,

至於剛才那個seed方法是什么意思呢,

打開那個Migration文件夾,看到里面的Configuration.cs , 左邊那個Seed方法,每次更新數據庫最后都會執行這個方法,可以在這里寫代碼增加記錄等等,最后要說說那個Migration了,

首先看到上面那個Configuration.cs里面的Configuration方法里面有個AutomaticMigrationEnable屬性,此時它是false,也就是說此時是不允許自動遷移的,當然這個Migration文件

夾是之前就加上去的,我們先把它刪除掉,

,沒有了,運行命令Add Migration InitialCreate 

看到沒有,報錯了,錯誤消息是沒有找到遷移配置,這時候我們需要先啟動遷移,執行命令:Enable-Migrations

 ,

Migration文件夾又神奇的出現了,再運行:Add-Migration InitialCreate命令,注意那個InitialCreate,

看到右邊那個Migration文件夾里多了一個2015...InitialCreate,看到這里懂了吧,然后我貼一段我從網上找到的圖

這個命令我還沒用過,不過應該沒什么問題。演示用的項目到Github里面去下載,地址:https://github.com/aspnetboilerplate ,我也是初學者,有問題一起探討,大神請指教。


免責聲明!

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



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