學習MVC -第3部分:使用EntityFramework建立MVC應用程式和執行CRUD操作
- 下載PDFArticle.zip - 2.1 MB
- 下載LearningMVCPart1.zip - 2.3 MB
- 下載SqlScriptToCreateTable.zip - 537 B
- 下載SqlScriptToCreateDatabase.zip - 872 B
- 下載LearningMVCWithEntityFrameworkPart3.zip - 2.3 MB
- 下載Learning_MVC_Part_3_Creating_MVC_application_with_EntityFramework.zip - 6.6 MB
介紹 在我們的第一次和第二次嘗試學習MVC,我們學會了什麼是MVC,關注點分離,如何建立一個簡單的MVC應用程式和使用LINQ to SQL的應用程式上執行CRUD操作。 本文主要關注如何在MVC應用程式中執行CRUD操作通過使用一個ORM(實體框架)。 本文試圖克服困惑有關如何使用EntityFramework MVC應用程式在一個非常簡單的方法。 我們的Roadmap 我們的路線圖是相同的: Part1:介紹MVC架構和關注點分離又是;第2部分:建立MVC應用程式從頭開始使用LINQ to SQL並連線資料庫只第3部分:連線MVC應用程式的幫助下EntityFramework DB-First方法。第4部分:連線MVC應用程式的幫助下EntityFramework優先方法只第5部分:實現儲存庫模式與EntityFramework MVC應用程式只第6部分:實現一個通用的庫模式和單元的工作模式與EntityFramework MVC應用程式只 的必備條件 有幾個先決條件,我們從這篇文章開始: 我們已經執行樣例應用程式,我們在本系列文章的第二部分。我們有EntityFramework 4.1包或DLL本地檔案系統。我們理解MVC應用程式是如何建立的。 ORM和EntityFramework是什麼? 現在讓我們看一看實體框架由微軟給出的標準定義: “微軟ADO。網路實體框架是一個物件/關係對映(ORM)框架,使開發人員能夠使用關係資料為特定於域的物件,不再需要的大部分資料訪問管道開發人員通常需要編寫的程式碼。使用實體框架,開發人員使用LINQ查詢問題,然後檢索和操作資料為強型別物件。實體框架的ORM實現提供服務,如變更跟蹤,身份決議,延遲載入和查詢翻譯,這樣開發者就可以專注於他們的特定於應用程式的業務邏輯,而不是資料訪問基本面因素。” 用簡單的語言,實體框架是一個物件/關係對映(ORM)框架。這是一個增強ADO。網路,一個ADO的上層。淨,給開發人員一個自動化訪問機制,將資料儲存在資料庫中。 希望這給瞥見一個ORM和EntityFramework。 EntityFramework架構 讓我們來瀏覽EntityFramework的架構: , 我們的Web應用程式與實體資料模型(實體框架),ADO之間充當介面。淨提供者和資料庫,獲取/儲存資料流圖中所描述的相同。 在MVC應用程式使用EntityFramework執行CRUD操作 開啟現有的學習MVC應用程式,我們使用LINQ to SQL建立。 我有很少的改變現有的應用程式,讓它容易理解當我們實現EntityFramework。 隱藏,複製Code
1. Changed the model class name from User to UserList, 2. 3. namespace LearningMVC.Models 4. { 5. #region User Model... 6. /// <summary> 7. /// User Model Class, purposely used for populating views and carry data from database. 8. /// </summary> 9. public class UserList 10. { 11. #region Automated Properties 12. public int UserId { get; set; } 13. public string FirstName { get; set; } 14. public string LastName { get; set; } 15. public string EMail { get; set; } 16. public string Address { get; set; } 17. public stringPhoneNo { get; set; } 18. public string Company { get; set; } 19. public string Designation { get; set; } 20. #endregion 21. } 22. #endregion 23. } 2. Changed the Solution name from LearningMVC to LearningMVCWithEF
。 步驟 開啟應用程式,修改了上述變化。刪除MyDBML。dbml類解決方案。現在不構建解決方案,它將導致一個錯誤,我們已經刪除了dbml檔案,所以控制器方法訪問dbml檔案將把編譯時錯誤。去專案,右鍵單擊,新增新項,選擇安裝模板和資料新增ADO。淨EntityDataModel給應用程式。 它EFDataModel.edmx名稱。 新視窗將開啟選擇模型內容,因為我們是在資料庫的第一種方法。 從資料庫選擇生成。 選擇連線,給連線字串名稱MVCEntities圖所示,單擊next。 提供現有的資料庫連線細節,我們用於現有的應用程式,資料庫名稱是MVC。如果你沒有一個現有的,建立一個新的連線資料庫指令碼檔案。 選擇資料庫物件,我們只有一個表,所以選擇一個如圖,給模型作為MVCModel名稱空間。 我們得到了我們的解決方案在一個客人,我們看到實體資料模型實體框架架構上圖: 在網路上。配置中,您可以看到一個新的連線字串新增。現在你可以評論/刪除舊LINQ to SQL的連線字串。 生成強型別的實體模型類(從一個部落格) 我們將使用強型別實體類。實體資料模型設計器使用一個程式碼生成器在Visual Studio稱為文字模板轉換工具箱(T4)。實體框架將自動生成一個使用者類。現在的程式碼生成器將根據我們的實體資料模型建立一個類。 預設情況下,設計師使用一個模板,導致實體類繼承實體框架的EntityObject ObjectContext和容器類繼承自英孚。 這些基類be繁瑣的工作的原因。ObjectContext是非常有用的,當你需要大量的控制實體框架的行為,更輕的重量DbContext提供最常需要的任務和簡化程式碼。 微軟提供了許多選擇從EDM T4模板生成類。當你安裝了EF 4.1,一個模板來建立簡單的類包括DbContext被新增到Visual Studio。讓我們告訴設計師使用這個模板而不是預設的。 右鍵單擊模型的設計器表面。從上下文選單中,選擇新增程式碼生成專案。在新增新專案對話方塊中開啟,從列表中選擇程式碼左邊安裝模板的型別。選擇ADO。淨DbContext發生器,然後單擊Add按鈕。 兩個新檔案將在解決方案資源管理器上市,Model1.Context。tt和Model1.tt。這些都是模板檔案。擴大所示的模板生成的類,如下圖: 當我們開啟這兩個新客人,我們看到上下文類訪問模型和模型類使用者實體已經建立,完整程式碼。 你有沒有注意到,我們還沒有寫一行程式碼,這是革命EntityFramework想出了。讓我們把熱烈的掌聲給聰明的工作。 現在時間來編寫一些程式碼 直到現在,我們還沒有寫一行程式碼,但是訪問上下文類,我們需要改變的邏輯訪問LINQ to SQL資料上下文EntityFramework資料上下文在我們前面建立的控制器在本教程的第二部分。 步驟 步驟1:將我們所有的意見UserList類,之後使用者類,但是我們改變UserList類(記得嗎? ?) 第二步:開啟控制器,改變上下文類如下所示的訪問機制,例如,指數的行動。 早些時候 隱藏,複製Code
public ActionResult Index() { var dbContext = new MyDBDataContext(); var userList = from user in dbContext.Users select user; var users = new List<LearningMVC.Models.User>(); if (userList.Any()) { foreach (var user in userList) { users.Add(new LearningMVC.Models.User() { UserId = user.UserId, Address = user.Address, Company = user.Company, FirstName = user.FirstName, LastName = user.LastName, Designation = user.Designation, EMail = user.EMail, PhoneNo = user.PhoneNo }); } } ViewBag.FirstName = "My First Name"; ViewData["FirstName"] = "My First Name"; if(TempData.Any()) { var tempData = TempData["TempData Name"]; } return View(users); }
現在 隱藏,複製Code
public ActionResult Index() { var dbContext = new MVCEntities() ; var userList = from user in dbContext.Users select user; var users = new List<LearningMVC.Models.UserList>(); if (userList.Any()) { foreach (var user in userList) { users.Add(new LearningMVC.Models.UserList() { UserId = user.UserId, Address = user.Address, Company = user.Company, FirstName = user.FirstName, LastName = user.LastName, Designation = user.Designation, EMail = user.EMail, PhoneNo = user.PhoneNo }); } } ViewBag.FirstName = "My First Name"; ViewData["FirstName"] = "My First Name"; if(TempData.Any()) { var tempData = TempData["TempData Name"]; } return View(users); }
你可以看到我們只需要改變訪問機制,僅僅改變2 - 3行,而不是任何應用程式的邏輯。 步驟3:同樣,都做同樣的動作。我不展示如何做,但你可以比較原始碼,現在可以自己做的事。 步驟4:注意LINQ to SQL上下文類使用InsertOnSubmit () / DeleteOnSubmit()和SubmitChanges()方法對插入、更新、刪除但EF上下文類使用閥門(),.SaveChanges()。它巧妙地在需要時也是如此。 第五步:現在所有的設定,重新構建應用程式,你不會得到一個錯誤。現在可以執行。 第六步:當您執行應用程式,它執行在跑步之前和現在,你可以執行CRUP操作作為一個終端使用者到應用程式,並測試應用程式。 夥計,我們首先完成實體框架的資料庫方法。你可以再次鼓掌,需要一些休息。 , 結論 我們已經搬到一個步驟在MVC CRUD操作的先進水平。有更多學習MVC和實體框架,我們將在後續文章。在本文中,我們掌握瞭如何執行CRUD操作使用EntityFramework MVC應用程式的資料庫中第一種方法,下一篇文章將重點放在我最喜歡CodeFirst方法。 編碼:快樂), 本文轉載於:http://www.diyabc.com/frontweb/news2094.html