1. 程式人生 > 實用技巧 >學習MVC -第3部分:使用EntityFramework建立MVC應用程式和執行CRUD操作

學習MVC -第3部分:使用EntityFramework建立MVC應用程式和執行CRUD操作

介紹 在我們的第一次和第二次嘗試學習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 string
PhoneNo { 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