Visual Studio 我們在Windows平臺上開發應用程式使用的工具主要是Visual Studio.這個集成開發環境已經演化了很多年,從一個簡單的C++編輯器和編譯器到一個高度集成、支持軟體開發整個生命周期的多語言環境。 Visual Studio以及它發佈的工具和服務提供了:設計、開發、 ...
Visual Studio
我們在Windows平臺上開發應用程式使用的工具主要是Visual Studio.這個集成開發環境已經演化了很多年,從一個簡單的C++編輯器和編譯器到一個高度集成、支持軟體開發整個生命周期的多語言環境。 Visual Studio以及它發佈的工具和服務提供了:設計、開發、單元測試、調試、軟體配置和管理、構建管理和持續集成等等。很少有開發人員因為還沒有使用它而擔心(註:作者應該是表達不用擔心VS的能力),Visual Studio是一個完整的工具集。Visual Studio在開發應用實體框架的應用程式中起著至關重要的作用。
Visual Studio為實體框架模型提供了一個集成的設計器,使用它提供的工具,你可以從頭創建或者從已存在的資料庫創建模型。當然,你可以選擇不使用設計器,純手工來創建實體類型和配置。
多數情況下,我們擁有一個已經存在的應用和資料庫,VisualStudio為我們提供了工具,它可以幫我們把資料庫中的表和關係導入到實體框架模型。這非常適合我們,因為很少有人會奢侈選擇開發一個嶄新的應用程式。多數情況下我們是維護、擴展、改進一個已存在的代碼和資料庫。
你可以在計器中創建一個空模型,然後從頭開始增加實體類型、類型間的關聯以及承繼體繫到設計器中。 當你創建好模型後,你可以右鍵設計器,然後從菜單中選擇從模型創建資料庫。
如果你的項目團隊是以代碼為中心的,你可以在不使用設計器的情況下手工創建一系列的領域類、它們之間的關係、上下文對象,然後把這些類和實體框架引擎關聯起來。
一旦創建好模型,改動是經常發生的,因為這對軟體開發來說是再自然不過的事。Visual Studio提供了工具幫我們從資料庫更新我們的模型,這會使模型和資料庫同步。另外,實體框架開發團隊還為我們提供了一個名為代碼優先遷移(Code First Migrations)工具,它能讓資料庫保持你模型中最新的修改。
1-2 使用實體框架
實體框架緊緊地和Visual Studio集成在一起,為了在你的應用程式中使用實體框架,我們增加一個ADO.NET實體數據框架到你的項目。方法如下:右鍵你的項目,然後選擇 ➤New Item(新建項)。在彈出的對話框中(如圖1-4),選擇Data(數據)模板下邊的ADO.NET Entity Date Model(實體數據模型)模板。然後單擊Add(增加)打開數據模型創建導向。
圖1-4 向項目中添加實體數據模型
在第一頁嚮導中有兩個選項: start with an existing database (從一個已存的數據創建);start with an empty model(創建一個空模型)。(前者的選項標簽實際為“Generate from database”),如圖1-5。
圖1-5實體數據模型嚮導給出從已存在的資料庫創建和創建空模型選擇
從已存在資料庫創建模型是資料庫優先(Database-First)方案。從你選擇的資料庫的表、視圖、存儲過程,嚮導會為創建好模型和用於編碼的實體類。立馬得到的好處就是,你可以在編碼中使用實體框架從資料庫中的表和列映射到模型中的強類型的實體類。如果資料庫中的表間是有關係的,他們會被建模成關聯。如果你有一個已經存在的資料庫,這是為你的應用創建實體數據模型的一種方式。然而,如果你喜歡使用代碼優先(Code-First)方案從一個已存在的資料庫創建模型,不用擔心,實體框架開發團隊已經創建了強有力的工具集(The Entity Framework Power Tools),它通過逆向工程,從一個存在的資料庫創建領域實體類,就像你手工敲出來的一樣。
如果你開發一個嶄新的應用,沒有已存在的資料庫,你同樣也可以選擇實體框架設計器。先創建一個空的模型,然後通過右鍵創建實體類型、關聯、繼承。也可以從工具箱中拖拽到設計器中創建它們。一旦建模完成,你就可以右鍵設計器選擇 Generate Database from Model(從模型創建資料庫)菜單項。它會產生一個用來創建資料庫表、關係的腳本。
你也可以在Visual Studio中手工創建每一個實體類,然後在DbContext上下文對象中註冊它們,這樣就能和實體框架服務相銜接。實體框架映射這些實體類到底層的資料庫,併在運行時,於記憶體中自動創建一個模型。
模型優先(Model-First)或者資料庫優先(Database-First),使用實體框架設計器建模。其中的關鍵點如圖1-6所示。在這個模型中,Customer 和 Order擁有一對多關聯,每一個Customer可能有多個Orders,但是每個Order只能關聯一個Customer.映射詳細信息視窗顯示一個實體類型的Customer映射到底層資料庫中的Customer表。該視窗同時也顯示了,Customer表中的列映射到實體類型Customer中的標量屬性(Scalar Proerties).記住,在實體框架中,你能使用數據註解或者代碼優先(Code-First)中的API特性來創建同樣的映射。
圖1-6設計器建模中的關鍵點
當然,設計器建模中的關鍵點遠不止圖1-6所呈現的,本書將覆蓋設計器建模的方方面面。某些情況下,會超出設計器的能力範圍,本書將展示通過修改底層的.edmx文件來處理這類情況。該文件包含了完整的模型定義,包含概念層、存儲邏輯層、映射層。
所以,無論我們在實體框架中使用資料庫優先(Database-First)、模型優先(Model-First)、代碼優先(Code-First),我最終都需要使用一個模型。我們獲得了較高的生產率,因為在編碼時,我們可以像使用應用程式中別的普通對象一樣使用模型(實體類),如圖1-6所示,在許多情況,你可以像使用應用程式中別的普通對象一樣使用Customer和Order對象。
如果你想插入一個新的customer 和 order到資料庫中,你可以創建Customer和Order類型的一個實例,設置它們的屬性。然後將其添加到記憶體中代表模型的上下文對象中。最後調用Savechanges()方法保存。所需要的SQL語句將被自動生成併發送到資料庫中實現插入一行。獲取資料庫中的customers和orders,你可以根據模型中的實體類型和關聯,使用LINQ或者實體SQL創建一個查詢來實現。
貫穿本書的技巧將一步一步地向你展示,如何在幾乎所有能想到的資料庫上建模的場景;如何通過模型實現查詢、插入、更新和刪除。以及在各種各樣的應用程式中如何運用實體框架。
第一章,到此結束。如果你覺得不錯,就請點擊右下邊的推薦,以便與更多的人分享。
實體框架交流QQ群: 458326058,歡迎有興趣的朋友加入一起交流
謝謝大家的持續關註,我的博客地址:http://www.cnblogs.com/VolcanoCloud/
參考頁面:http://qingqingquege.cnblogs.com/p/5933752.html