学习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 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