[Asp .Net MVC] Entity framework code first with localdb

熱門文章 (Popular Post)

Posted by : Duran Hsieh 3月 31, 2016

前言

這篇是過去初學Asp .Net MVC過程中的筆記,設定連線字串、使用code first產生localDB
的流程,提供給大家參考。
若有錯誤請不吝指教,謝謝!


目錄

  1. 建立範本專案
  2. 設定 Connection String
  3. 建立 DbContext
  4. 執行 database migration 指令
  5. 檢視資料庫
  6. 更新 database


建立範本專案

(Visual Studio 版本不同畫面有些差異,本篇文章使用Visual Studio 2015)
Step 1. 開啟 Visual Studio 2013/2015, 選擇檔案(file) -> 新增(new) -> 新專案(new project)
            選擇web -> ASP.Net Web Application, 輸入專案名稱,點確定。





Step 2. 選擇MVC專案,點選確定,即建立一個範本專案。



設定 Connection String

Step 1. 從方案總管(solution explorer)中,開啟Web.config,找到連線字串設定
             (ConnectionStrings)


 Step 2.輸入連線字串內容如下:
<add name="StudentDbContext"  connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Student.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
這組連線字串之後會產生一份LocalDB,位於App_Data資料夾內,檔案名稱為Student.mdf
2018/3/19更新:若您的版本較新,請將連線字串更改為 <add name="StudentDbContext"  connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Student.mdf;Integrated Security=True" providerName="System.Data.SqlClient" /> 
 


建立 DbContext

Step 1.我們新增一個cs檔案,名字為StudentModels.cs於Models資料夾下,這是一個DbContext
            內容如下:



Step 2. DbContext的名稱必須與connectionString中設定的相同




執行 database migration 指令

Step 1. 接下來,我們必須產生資料庫。
            我們選擇工具(Tools) -> NuGet Package Manager -> Package Manager Console
            叫出 Package Manager Console



Step 2. 輸入
enable-magrations
            若您的專案中有兩個連線字串,系統會提醒您指令。
            輸入
 Enable-Migrations -ContextTypeName ConnectStringCodeFirst.Models.StudentDbContext



Step 3. 執行完成後,會產生Magrations的資料夾,產生一個Configuration.cs檔案。


Step 4. 接著輸入下列指令,產生第一次資料庫變更記錄:
            add-migration 變更名稱
add-migration InitialCreate
            指令執行完成,產生一個 "時間戳記 + InitialCreate.cs檔案,內容記錄著資料變更記錄。


Step 5. 接著輸入下列指令,將內容更新到資料庫
update-database


檢視資料庫

Step.1 檢視(View) -> Server Exploer


Step.2 展開Data Connections、展開StudentDbContext 進行資料庫連線


Step 3.展開table,我們可以看見StudentProfile與_MigrationHistory資料表。
           _MigrationHistory是記錄資料庫變更歷程的資料表。



更新 database

Step 1.當我們需要變更資料表欄位、類型或增加資料表,我們一樣可以於DbContext內
           進行修改,如下圖所示,我們建立另一個Score資料表。


Step 2. 輸入指令
add-migration addScoreTable
            執行完成後,也會產生一個 "時間戳記"+addScoreTable.cs的檔案,記錄變更歷程。


Step 3. 輸入指令,更新資料庫。
update-database


結論

Code first對於開發者而言是非常快速與方便的流程,除了本篇建立資料表與欄位外,也
可以自行撰寫資料內容,當需要重新產生資料庫時,快速產生測試資料。

但是有幾個問題,個人常常遇到:
1.多人共同開發的過程中,必須注意執行migration先後與merge先後,否則可能發生產生
   資料庫錯誤,而必須重新整理migration (重做migration)。
2.當發佈專案的時候,必須搬移資料庫,需要重新整理資料庫內容到正式資料庫上,過程
   中可能發生許多資料問題,需要去整理。

這篇提供給大家參考。



範例程式

https://github.com/matsurigoto/MvcLocalDbCodeFirst.git



參考資料

http://www.asp.net/mvc/overview/getting-started/introduction/creating-a-connection-string
http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-the-entity-framework-in-an-asp-net-mvc-application




上一篇:[Asp .Net MVC] Entity framework database first with localdb
下一篇:[Asp .Net MVC] Linq、Lambda 與 System.Linq.Enumerable 方法



本篇文章內容歡迎分享,轉載與使用圖文請來信告知並註明出處。


Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Duran Hsieh @ Matsurigoto - Date A Live - Powered by Blogger - Designed by Johanes Djogan -