【译】MVC3 20个秘方-(2)通过脚手架自动生成controller和view ----代码先行/数据库先行
场景
你要通过你的网站管理动态内容
解决方案
通过使用脚手架自动生成一个controller和多个views 允许用户Create, Read, Update, and Delete(CRUD)数据。通过EntityFramework 的 code-first(代码先行) and database-first (数据库先行)方法。
讨论
在用脚手架搭建contorller和view之前,一个model和DBContext需要被创建。它将定义model存了什么类型的数据。(这是代码先行的方法)
在接下来的例子里。创建的2个类将提供管理一个图书列表的能力。
第一个类包含图书数据的定义,将保存在SQL Express database.
第二个类包含DBContext,它创建book class 的DbSet。
创建model,右键单击model 文件夹。选择添加->class。在filename输入:Book.cs.并且用以下代码替换掉生成的代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace MvcApplication.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 model 和BookDBContext。我们就可以使用脚手架来搭建controller和view了。
作为开始,右键单击Controller文件夹。并且选择添加->controller
如下图:
依照上图选择模板 :using EntityFramework。
Modelclass 选择刚才我们创建的Book。
DataContext 选择我们的BookDBContext。并且点击“Add”。
这时候我们会发现脚手架已经帮我们创建了一个BookController。发现里边的action都已经帮我们写好了。
译者附:下图是我访问localhost/book/index 创建了一本新书。
我们可以方便的进行增删查改。是不是很方便?
Entity Framework 同样提供能力去构建controller和view 通过一种不同的方法。Database-First 数据库先行。这种方法可以利用现有的数据库生成model。
在大型项目中,在独立的基础上合理运用资源是相当普遍的。一个优秀的前端工程师在数据库设计方面不一定也是一个专家。所以,需要一个DB专家来设计数据库。
在下一个例子里,我们要设计一个数据库先行的model。
在model文件夹点击右键。New->item 。在右边的列表选择ADO.NET实体数据库模型。
命名为BookDBFirstModel.edmx.
现在,是时候建立数据库连接了。
1.选择从数据库生成
2. 点击新建连接按钮
3.默认选择数据源:Microsoft SQLServer (Sql client)
4.服务器名:.\SQLEXPRESS
5. 在数据库名里选择MVC自动为上一个事例生成的MvcApplication.Models.BookDBContext。点击确定。
在”将web.config中的实体连接设置另存为“bookEntities”。
选择在数据模型中包含表,视图,存储过程。点击完成。
现在再来看看我们的model文件夹。多了一个BookDBFirstModel.edmx实体。
在使用脚手架之前一定要编译一下解决方案。
右键单击controller文件夹。添加 ,如下图:
Model Class 就填写 Entity Framework 生成的Books。
而Datacontext 则选择刚才我们设定的实体连接设置bookEntities”。
同样创建成功了一个新的controller :BController。这是由Database先行的。
本人做了一个小demo。需要的朋友可以直接点击下载查看。
另请参阅