MVC5+EF6簡單實例---以原有SQLServer數據庫兩表聯合查詢爲例

 


 



工具:VS.net201三、EF六、MVC五、SQLServer2008html

參考出處:數據庫

http://www.cnblogs.com/slark/p/mvc-5-get-started-create-project.html瀏覽器

http://www.cnblogs.com/miro/p/4288184.htmlmvc

http://www.cnblogs.com/dotnetmvc/p/3732029.html框架

 1、準備工做

在SqlServer上建立數據庫:Element工具

模擬兩個表並插入數據:SysUser(用戶表)、SysRole(角色表)佈局

CREATE TABLE [dbo].[SysUser](
 [ID] [int] IDENTITY(1,1) NOT NULL,
 [Name] [nchar](10) NOT NULL,
 [RoleNum] [nchar](10) NOT NULL
) ON [PRIMARY]post

CREATE TABLE [dbo].[SysRole](
 [ID] [int] IDENTITY(1,1) NOT NULL,
 [RoleName] [nchar](10) NOT NULL,
 [RoleNum] [nchar](10) NOT NULL
) ON [PRIMARY]學習

插入數據:url

2、新建MVC項目
 
生成的解決方案的文件夾,對MVC的理解尚淺,不做過多的講解,請多看看各位大俠們的博文,能受益不淺。要真正理解框架的涵義,分層的優勢,多動手,多感覺,多思考。經過這幾天的學習,感受EF(Entity FrameWork)如它名字同樣,是與Model層相關的,可生成實體對象。與Controll、View應該沒直接聯繫,一開始容易和其它層混在一塊,要分清概念和做用。(如理解不對樂意接受批評指正!)
安裝EF6:
 

2、使用EF的Code First從原有數據庫中生成Models

在Models文件夾上右鍵--添加--新建項
 
數據--ADO.NET實體數據模型
 
 如不能出現下圖的選項,請下載安裝 Entity Framework 6.1.0 Tools for Visual Studio 2012 & 2013下載地址: http://www.cnblogs.com/dotnetmvc/p/3644980.html
 選擇新建鏈接
 
 
 點擊更改,選擇以下圖
 
 
 
 選擇咱們須要生成數據模型的兩個表
 
 完成後在Models文件夾下生成以下三個文件   其中ElementModel.cs爲數據庫鏈接上下文,也就是鏈接數據庫用的,SysUser.cs和SysRole.cs爲對應數據庫表的數據實體模型。
 

 3、根據Model生成Controller及View

 在Controllers文件夾上右鍵--添加--控制器

 
 輸入控制器名稱、選擇模型類、數據庫上下文(以SysUser模型爲例)
 
 
 完成後在Controllers文件夾下生成SysUserController.cs,SysUserController的做用就是接收View層的action(動做),而後到相應的model層進行的數據交互,再把結果返回給View。
一樣,在Views文件夾下也生成了SysUser文件夾,裏面對應着五個視圖頁面的CShtml文件。右鍵Index.cshtml--在瀏覽器中查看,顯示以下頁面:
 
 

4、利用ViewModel顯示多表聯合查詢

 剛剛咱們經過controller把從一個表SysUser中查詢的數據以SysUser(Model)實體的形式返回給Index(View)顯示,而在實際工做中咱們須要聯合查詢多個表中的數據並在View中顯示。那個咱們就須要藉助於ViewModel,ViewModel是更接近於View的實體模型,也就是咱們根據View中所要顯示的數據的須要來創建實體模型。而Model更接近於數據庫實體。下面咱們就實現一個簡單的兩表聯合查詢的小例子:查詢出SysUser表中的用戶名及它所對應的角色名。
 
右鍵解決方案--添加--新建文件夾(ViewModel),而後右鍵ViewModel文件夾--添加--類
 
 
新建UserRole類,並添加實體以下:

namespace MVCDemo.ViewModels
{
    public class UserRole
    {
        public string userName { get; set; }
        public string userRole { get; set; }
    }
}

右鍵Controllers文件夾添加控制類,此類繼承於Controller類

添加代碼以下(用Linq to Entity兩表聯合查詢):

using System;

using System.Collections.Generic;

using System.Linq; using System.Web;

using System.Web.Mvc; using System.Data.Entity;

using MVCDemo.ViewModels;

using MVCDemo.Models;

namespace MVCDemo.Controllers

{    

  public class UserRoleController : Controller    

  {        

    ElementModel db = new ElementModel();

          public ActionResult Index()        

    {            

      var userRoleList = from uu in db.SysUsers                               

        join ud in db.SysRoles on uu.RoleNum equals ud.RoleNum                               

        where uu.ID == 1                               

        select new UserRole {userName = uu.Name,userRole = ud.RoleName}            

      return View(userRoleList);        

    }    

  }

}

 右鍵Views文件夾,新建UserRole文件夾;右鍵UserRole文件夾,添加--帶有佈局的MVC5視圖頁Index.cshtml,添加代碼以下:

@model IEnumerable<MVCDemo.ViewModels.UserRole>

@{    

  Layout = "~/Views/Shared/_Layout.cshtml";

  }

<table class="table">    

<tr>        

   <th>            

    @Html.DisplayNameFor(model=>model.userName)

        </th>

        <th>

            @Html.DisplayNameFor(model => model.userRole)

        </th>

        <th></th>

    </tr>

      @foreach (var item in Model)

    {       

  <tr>          

   <td>                

@Html.DisplayFor(modelItem => item.userName)

            </td>           

     <td>

                @Html.DisplayFor(modelItem => item.userRole)

            </td>  

       </tr>    

}

</table>

相關文章
相關標籤/搜索