[翻译]ASP.NET MVC 3 开发的20个秘诀(二)[20 Recipes for Programming MVC 3]:自动生成控制器和视图

议题

通过您的网站管理动态内容。 

解决方案

使用实体框架与数据库绑定,通过Controller以及自动生成的多个视图界面,允许用户创建、读取、更新以及删除(也称为:CRUD)数据。 

讨论

在定义控制器和视图之前,需要预先创建模型和DbContext以及数据收集规则(代码优先方法)。在接下来的例子中,将会创建两个类,并实现一个图书列表管理的功能。第一个类包含书籍信息在SQL Express数据库中存储的数据定义。第二个类将是一个包含Book类型的DbSet对象的DbContext类。创建模型,右键单击Models文件夹,并选择添加 -> 。在类的文件名写:Book.cs,用下面的代码替换生成的代码:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace MvcApplication4.Models
{
public class Book
{
public int ID { get; set; }
public string Title { get; set; }
public string Isbn { get; set; }
public string Summary { get; set; }
public string Author { get; set; }
public string Thumbnail { get; set; }
public double Price { get; set; }
public DateTime Published { get; set; }
}

public class BookDBContext : DbContext
{
public DbSet<Book> Books { get; set; }
}

}

 

*译者注:保存Book.cs后,必须编译整个项目(快捷键Ctrl+Shift+B)才能继续下面的操作。

创建Book的模型和BookDBContext类,接下来就可以开始完成控制器和视图了。开始,右键单击Controller文件夹,选择“添加控制器”(如图 1-1)。

                       

图例 1-1,创建新的控制器

如图所示,将新建控制器命名为BooksControllers。在模板选项卡中选择“包含读/写操作和视图的控制器(使用 Entity Framework)”。模型类选择Book类,数据上下文类选择之前创建的BookDBContext类。视图选项中的Razor(CSHTML)是默认选项,所以保持不变。内容输入完毕以后点击“新增”,创建文件。(如图1-2)

 

图例 1-2,新建文件

 

Entity Framework可以根据已存在的数据库为控制器创建不同的操作方法和视图。在大型项目中,这些基础内容是分开制作的。比如,一个好的前端Web开发人员可能并不是数据库设计方面的专家。因此,数据库设计需要有专业人员负责。 

在接下来的例子中,将会连接先前创建的数据库,并为“Book“表创建相应的实例模型。选择使用旧的应用程序还是创建新的应用程序,这取决于您选择代码优先还是数据库优先。

程序创建后,右键单击Models文件夹,并选择“添加”->“新建项”。在右上角搜索框中键入”实体“,从搜索结果中选择”ADO.NET实体数据模型“。将文件名改为”BookModel.edmx“。现在可以通过向导建立数据库连接:

  1. 选择“从数据库生成”;
  2. 点击“新建连接”按钮;
  3. 在列表中选择Microsoft SQL Server,并点击“继续”;、
  4. 在连接属性对话框的服务器名称中选择你的SQL Express数据库;
  5. 连接后在数据库的下拉框中选择由MVC自动创建的数据库中最后一个表,然后点击“确定”。

 

* 译者注:请在步骤3的服务器名中输入.\SQLEXPRESS,步骤4中选择的应该是tempdb数据库,不知道是否在之前有前提我没有看到,当然下面所说的“Book”表也是不存在的,但是这个章节的操作有些是行不通的。

点击下一步更新Web.Config中的SQLExpress连接字符串。现在在数据库选择对话框中展开表节点并选择“Book”表。

点击“完成”之后,将会在Models目录下创建新的实体图。在创建控制器之前必须先对解决方案进行编译。项目构建完成,就像先前“代码优先”的例子中做得那样,右键单击控制器文件夹,选择“添加”->”控制器”。 

使用这种方法创建的控制器,依然会有“Book”模型类,数据上下文类以及以及包含数据库连接的实体实例。 

在未来的秘诀中我们将使用代码优先的方法,手工操作数据库中的表,让更多的注意力集中到MVC本身。

参考信息

ADO.NET Entity Framework Overview 原书地址 书籍源代码

posted on 2011-12-03 23:31  O2DS  阅读(3675)  评论(2编辑  收藏  举报

导航