摘要: Microsoft Entity Framework是一个对象关系映射工具(Object Relational Mapping ,O/RM)工具。它可以让你从一个数据库自动地生成数据接入层。实体框架免去了你手工创建数据接入层的乏味工作。ADO.NET 实体数据模型可以映射数据库与数据表,也可以映射模型类。它是关系数据库与面向对象系统的桥梁,闲话少说,就让我们举个简单的例子来解析它吧!Model First方式创建数据库1.启动VS2010.创建一个Console application(控制台) : 名为:EFModelDemo 如下图:2. 在项目上,右键=》选择“添加->新项目..” 阅读全文
posted @ 2013-12-17 23:35 天山式神剑 阅读(1590) 评论(1) 推荐(0) 编辑
摘要: ASP.NET MVC最佳实践本文档提供了一套旨在帮助创建最佳优化ASP.NET MVC应用程序的 开发人员编码准则。 当然,由您来选择这些优化准则。模型的建议Model是定义业务领域相关的对象,应该包含业务逻辑(对象如何动作和关联),验证逻辑(验证对象的有效值),数据逻辑(数据对象如何持久化),和会话逻辑(跟踪用户状态)。创建独立的Model项目,在ASP.NET MVC 项目中引用Model程序集。尽量将频繁复用的业务逻辑放置在Model中。如将所有业务逻辑放置在Model项目中,可根据实际业务数据来生成View和Controller。有如下好处: 1.减少重复的业务逻辑。 2.在View 阅读全文
posted @ 2013-05-30 09:51 天山式神剑 阅读(1658) 评论(0) 推荐(2) 编辑
摘要: 数据的修改视图首先打开Movie控制器,添加一个返回数据修改视图的Edit()方法与一个对该视图中的表单提交进行处理的Edit()方法,代码如下所示: 1 // GET: /Movies/Edit 2 public ActionResult Edit(int id) 3 { 4 Movie movie = db.Movies.Find(id); 5 if (movie == null) 6 return RedirectToAction("Index"); 7 8 return View(movie); 9 }10 ... 阅读全文
posted @ 2013-12-17 17:37 天山式神剑 阅读(589) 评论(1) 推荐(0) 编辑
摘要: 实现针对数据的CRUD操作首先,让我们来看一下如何实现一条数据的明细信息视图。为了更好地体会这一功能,首先我们在前文所述的电影清单视图(Views文件夹下面的Movies文件夹下面的Index.cshtml文件)中删除电影清单中的种类、票价、电影等级字段,使其代码如代码如下所示: 1 @model IEnumerable 2 @{ 3 ViewBag.Title = "电影清单"; 4 } 5 我的电影清单 6 7 @Html.ActionLink("追加", "Create") 8 9 10 11 12 13 ... 阅读全文
posted @ 2013-12-13 12:41 天山式神剑 阅读(468) 评论(0) 推荐(0) 编辑
摘要: MVC验证属性自动验证原理也许有人会问,既然我们没有在C与V追加任何显示错误信息提示的代码,那么控制器或视图内部是如何生成这些显示错误信息提示的画面的。让我们揭开这么谜底吧!当在Movie类中追加了验证属性规则后,我们并没有修改这个类中的任何代码!要揭开这个谜底,首先让我们看看MovieController类中的代码: 1 public ActionResult Create() 2 { 3 return View(); 4 } 5 6 // 7 // POST: /Movies/Create 8 9 [HttpPost]10 public ActionResult Creat... 阅读全文
posted @ 2013-12-12 11:47 天山式神剑 阅读(459) 评论(1) 推荐(1) 编辑
摘要: 在模型中添加验证规则本节介绍如何在我们的Movie(电影)模型中添加一些验证规则,同时确认当用户使用我们的应用程序创建或编辑电影信息时将使用这些验证规则对用户输入的信息进行检查。首先,让我们在Movie类中追加一些验证规则。打开Movie.cs文件,在文件的头部追加一条引用System.ComponentModel.DataAnnotations命名空间的using语句,代码如下所示:using System.ComponentModel.DataAnnotations;这个System.ComponentModel.DataAnnotations命名空间是.NET Framework中的一个 阅读全文
posted @ 2013-12-10 13:51 天山式神剑 阅读(554) 评论(1) 推荐(0) 编辑
摘要: 尽管ASP.NET MVC架构和Web Form架构区别很大,但是还是有很多共同之处。毕竟它们都是以ASP.NET API与.NET框架为基础构建的。比较一下ASP.NET MVC和Web Form框架,以便知道有多少Web Form的概念与ASP.NET MVC开发相关。也许我们不知道,基于.NET平台开发网站的框架,实际上可以分成两个部分:可视化用户界面(Web Form)和后台Web组件(ASP.NET)。两者可以通过它们的命名空间区分开:所有System.Web.UI.*命名空间下的内容可以称为Web Form,而System.Web.*命名空间下的其他内容可以称为ASP.NET。与W 阅读全文
posted @ 2013-10-15 19:05 天山式神剑 阅读(1247) 评论(2) 推荐(1) 编辑
摘要: 修正票价字段的精度前面我们追加数据的时候遗留下来一个问题,就是在追加数据的时候,票价(Price)字段中输入的是9.99元,但是电影清单显示画面中该数据的票价字段显示为10元,这是为什么?这个问题发生的原因是因为,当EF code-first在创建数据表的时候,如果字段为Decimal类型,则使用默认的精度(18:0),从而使得9.99元被四舍五入成为10元。现在我们想要将这个默认的精度修改为(18:2),从而使得数据表中的票价字段能够存储小数点后的两位数字。可喜的是EF code-first允许你很容易地重载这个定义模型如何向数据库中存取数据的映射规则。你可以利用这个重载机制来重载EF co 阅读全文
posted @ 2013-09-07 21:56 天山式神剑 阅读(844) 评论(4) 推荐(0) 编辑
摘要: 维护模型与数据库结构之间的差别现在我们已经将应用程序修改完毕,在Movie数据模型中添加了一个Rating属性。现在让我们重新运行应用程序,打开“http://localhost:xx/Movies”这个URL地址,这时,浏览器会显示一个应用程序出错画面。如图所示。导致这个问题发生的原因是因为在应用程序中,更新后的Movie数据模型类与我们实际连接的数据库结构并不统一(Movies数据表中并没有Rating列)。在默认情况下,当你使用EF code-first自动创建数据库时,EF code-first会自动在数据库中追加数据表来使得数据库的结构与它自动生成的模型类保持同步。如果不同步,EF将 阅读全文
posted @ 2013-09-03 12:35 天山式神剑 阅读(402) 评论(1) 推荐(0) 编辑
摘要: 追加一条电影信息运行应用程序,在浏览器中输入“http://localhost:xx/Movies/Create”,在表单中输入一条电影信息,然后点击追加按钮,如图所示。点击追加按钮进行提交,表单中输入的这条电影信息将会保存到数据库中,保存后浏览器中将打开电影清单画面,并且将这条追加的电影显示在清单中,如图所示。注意到在这个电影清单画面中将刚才追加的电影票价显示成了10元,而不是用户输入的9.99元,这是因为当前该数据表中Decimal类型的默认精度只能识别与处理整数值,并且自动将小数部分四舍五入。关于如何解决这个问题,我们将在下一节中对模型进行一些调整的时候会同时进行介绍。现在我们已经有了一 阅读全文
posted @ 2013-08-28 19:12 天山式神剑 阅读(338) 评论(1) 推荐(0) 编辑
摘要: 为了实现这一处理,我们需要在MoviesController类中追加第二个Create方法。这个Create方法具有一个[HttpPost]属性,它意味着我们将要用它来处理提交到“/Movies/Create”这个URL地址的请求。另外,所有提交到“/Movies/Create”这个URL地址的非POST的请求(即GET请求)将被第一个Create方法进行处理,即简单地返回一个空的表单。以下代码为MoviesController类中的两个Create方法的全部代码。public ActionResult Create(){return View();}[HttpPost]public Acti 阅读全文
posted @ 2013-07-08 19:21 天山式神剑 阅读(343) 评论(1) 推荐(0) 编辑
摘要: 增加追加数据的方法和视图现在我们将要在数据库中追加并保存一些数据。我们将要创建一个表单以及一些表单输入控件,用来输入数据信息。当用户提交表单时将把这些用户输入的信息保存在数据库中。我们可以通过在浏览器中输入“http://localhost:xx/Movies/Create”这个URL地址来访问这个表单。首先,我们需要在我们的MoviesController类中追加一个Create方法,该方法返回一个视图,该视图中包含了用户输入信息时所要用到的表单。public ActionResult Create(){return View();}现在让我们来实现这个Create方法中所要返回的视图,我们 阅读全文
posted @ 2013-06-17 10:53 天山式神剑 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 与SQL Server Express结合使用我们在前面创建了一个MovieDBContext类,用来连接数据库,并将数据库中的记录映射到Movie对象。你也许会问一个问题,怎样定义数据库连接?接下来我们通过在web.config文件中增加一些连接信息来定义一个数据库的连接。打开应用程序根目录下的Web.config文件(请注意不是Views文件夹下的Web.config文件),如图在Web.config文件的<connectionStrings>元素中追加类似如下所示的连接字符串。<configuration><connectionStrings>< 阅读全文
posted @ 2013-06-16 12:58 天山式神剑 阅读(442) 评论(1) 推荐(0) 编辑
摘要: 从控制器访问模型中的数据在本节中,我们将要创建一个新的MoviesController类,并且书写代码来获取数据库中的数据,并通过视图模板来显示在浏览器中。鼠标右击Controllers文件夹,点击“添加”菜单下的“控制器”菜单项,将会弹出一个“添加控制器”对话框,如图:在该对话框中将控制其命名为MoviesController,然后点击添加按钮,该对话框被关闭。观察解决方案资源管理器中,Controllers文件夹下增加了一个名为MoviesController.cs的文件,并且呈打开状态。让我们更新MoviesController类中的Index方法,以便获取movie(电影)清单。这里需 阅读全文
posted @ 2013-05-30 14:59 天山式神剑 阅读(282) 评论(1) 推荐(0) 编辑
摘要: 添加一个模型在本节中我们将追加一些类来管理数据库中的电影。这些类将成为我们的MVC应用程序中的“模型”部分。我们将使用被称之为“Entity Framework”的数据访问技术来定义这些模型类,并使用这些类来进行操作。Entity Framework(通常被简称为“EF”)支持一个被称之为“code-first”的开发范例。Code-first允许你通过书写一些简单的类来创建模型对象。你可以通过访问这些类的方式来访问数据库,这是一种非常方便快捷的开发模式。4.1 利用NuGet来安装EFCodeFirst我们可以利用NuGet包管理器(安装ASP.NET MVC3时会自动安装)来把EFCode 阅读全文
posted @ 2013-05-24 19:10 天山式神剑 阅读(363) 评论(2) 推荐(0) 编辑