程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 采用C#用實體框架創建一個模型類

采用C#用實體框架創建一個模型類

編輯:C#入門知識

通過本次教程,你將學會怎樣通過實體框架使用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查詢語法來實現,下面是兩種語法的相同實現:
 

ViewData.Model = _db.MovieSet.ToList();
ViewData.Model = (from m in _db.MovieSet select m).ToList();


你覺得那總LINQ語法直觀,就用哪種。它們在執行上沒有什麼不同,唯一的不同是形式的不同。

下面的listing 2 用來顯示提取的記錄:
Listing 2 – ViewsHomeIndex.aspx
 

<%@ Page Language="C#"  
  Inherits="System.Web.Mvc.ViewPage<List<MovieEntityApp.Models.Movie>>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Index</
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved