【譯】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。需要的朋友可以直接點擊下載查看。
另請參閱

浙公網安備 33010602011771號