標籤:wpa scn wps gsl lrm fail sdi pmu mpi
Entity Framework v6.1 開始原生支援將Code First 應用於一個已經存在的資料庫。下面以一個demo來講解如何把Code First 應用於已經存在的資料庫以及如何使用Code First 移轉來更新資料庫。
1.把Code First應用於已經存在的資料庫
首先,建立資料庫CodeFirstFromExistingDB,接著建立兩個表Categories 和 Products ,表結構如下:
Categories :
Products:
然後插入測試資料:
接著,建立一個MVC項目並且從資料庫產生Code First 資料模型:
1.建立一個名為CodeFirstExistingDB的web應用 ,並且設定身分識別驗證為個人使用者賬戶
web應用建立完成後,右擊項目目錄,選擇添加-建立項-資料-ADO.NET實體資料模型,設定名稱為:StoreContext
點擊添加,在嚮導頁選擇來自資料庫的Code First
點擊下一步,在選擇串連介面點擊建立串連,
在串連屬性頁面,設定資料庫資訊:
點擊下一步,選擇資料庫物件(表),並且勾選確定所產生對象名稱的單複數形式複選框
ADO.NET實體資料模型建立完成後,會在項目根目錄建立Product、Category以及StoreContext三個類。
接著添加控制器和視圖來展示資料:
產生項目,然後右擊Controller檔案夾,選擇添加-控制器,選擇包含視圖的MVC5控制器(使用Entity Framework),控制器設定如下:
建立完成後,右擊視圖檔案件下Products檔案夾下的index.cshtml,在瀏覽器中查看,可以看到資料展示到頁面上。
2.使用Code First 移轉更新資料庫
Code First 移轉,可以把你在代碼中對模型的修改更新到資料庫,要使用Code First 移轉,首先需要開啟它:
在包管理器控制台輸入:Enable-Migrations -ContextTypeName CodeFirstExistingDB.StoreContext ,斷行符號。(注意,需要制定需要使用的上下文(context)因為在建立項目時自動建立了身分識別驗證的上下文)。執行完成之後會建立Migrations 檔案夾,裡麵包含一個Configuration.cs 類。
此時,要使Code First工作還需要一個額外的步驟,如果現在建立一個遷移,它會嘗試把上下文裡包含的說有實體添加到資料庫,由於Products和categories 表已經存在於資料庫中,所以遷移會失敗。所以首先需要建立一個初始化為空白的遷移,然後我們就可以對任何修改添加遷移了。
在包管理器控制台輸入:Add-Migration InitialCreate -IgnoreChanges 以建立一個空的遷移。
IgnoreChanges 標識用於確保這次遷移不會做任何事。執行它會在資料庫中建立migrations 表,migrations 表是一個對資料庫遷移之前的快照。
接著,在包管理器控制台輸入:update-database 用於把初始化遷移更新到資料庫。
遷移初始化完成後,來使用Code First 移轉 更新資料庫:
在Product表中添加Description 列,並且設定長度為50,([StringLength(50)] );現在添加一個新的遷移來把修改更新到資料庫。
在包管理器控制台輸入:Add-Migration add_product_description ,執行後Migrations 檔案夾會增加一個檔案,用來描述這次遷移。接著,在包管理器控制台輸入:
update-database , 新的列就會被增加到Products表中。
將EF Code First 應用於已經存在的資料庫