通過本次教程,你將學會怎樣通過實體框架使用asp.net mvc。你將學會使用實體向導來創建一個ado.net實體數據模型。在本次教程裡,我們會創建一個web應用程序來說明怎樣用實體框架顯示,插入,更新和刪除數據庫數據。
Microsoft Entity Framework是一個對象關系映射工具,它能讓你一個創建數據訪問層。避免手動創建數據訪問類帶來的麻煩。
為了演示怎樣使用Entity framework。我們將創建一個簡單的應用程序。在這裡我們創建一個movie database應用程序,這個應用程序能讓你顯示和編輯movie數據庫記錄。
本次教程假定你有vs2008 或者visual web developer 2008 和 service pack 1。要使用entity framework你需要service pack 1。你可以從http://www.asp.net/downloads/下載Visual Studio 2008 Service Pack 1 或者Visual Web Developer with Service Pack 1。
注意:
ASP.NET MVC 和the Microsoft Entity Framework沒有必然的聯系。除了Entity Framework,你還可以選擇其他的 O/RM工具(如:Microsoft LINQ to SQL, NHibernate 或者SubSonic)。
然後我們要創建一個數據庫,和相應的model (具體內容略)。
注意:
在model文件夾下面的designer.cs文件裡,不要寫代碼,容易出錯。如果你想擴展designer.cs裡面的entity類的方法,你可以在另一個文件裡寫partial classes。
用entity framework 選擇數據記錄
下面的index()動作 通過entity framework返回所有數據庫裡的記錄:
Listing 1 – ControllersHomeController.cs
using System.Linq;
using System.Web.Mvc;
using MovieEntityApp.Models;
namespace MovieEntityApp.Controllers
{
[HandleError]
public class HomeController : Controller
{
MoviesDBEntities _db;
public HomeController()
{
_db = new MoviesDBEntities();
}
public ActionResult Index()
{
ViewData.Model = _db.MovieSet.ToList();
return View();
}
}
}
注意到,在listing 1裡有一個構造器,這個構造器用來初始化類裡的字段域_db。_db代表了用entityframework生成的實體。_db域是在剛才model裡的創建的MoviesDBEntities類的一個實例。
注意:
為了能在controler裡使用theMoviesDBEntities類,你必須引入MovieEntityApp.Models namespace命名空間(theMoviesDBEntities所在的空間)。
_db在index()動作裡被用來從數據庫的表裡返回記錄。tolist()會把movie數據集轉變為一般的movie objects集合(List<movie>).
返回的數據集是用LINQ to entities技術實現的。上面listing 1使用的時LINQ方法語法來返回數據集。如果你喜歡,你也可以使用LINQ查詢語法來實現,下面是兩種語法的相同實現:
你覺得那總LINQ語法直觀,就用哪種。它們在執行上沒有什麼不同,唯一的不同是形式的不同。
下面的listing 2 用來顯示提取的記錄:
Listing 2 – ViewsHomeIndex.aspx