国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

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

2019-11-17 02:02:49
字體:
來源:轉載
供稿:網友

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

Posted on 2015-03-24 15:42 自由開發者 閱讀(...) 評論(...) 編輯 收藏

有二三年沒寫代碼了,**內的工作就是這樣,容易廢人!看到園子里這么多大俠朝氣蓬勃的,我想也要學點東西并和大家分享,共同進步!快樂每一天,進步每一天!言歸正傳!

通過最近一段時間對MVC5、EF6的學習,可以簡單的做一個小例子,其中涉及到EF讀取已有數據庫中的數據,并對兩個表進行聯合查詢,顯示數據。

工具:VS.net2013、EF6、MVC5、SQLServer2008

參考出處:

http://www.survivalescaperooms.com/slark/p/mvc-5-get-started-create-PRoject.html

http://www.survivalescaperooms.com/miro/p/4288184.html

http://www.survivalescaperooms.com/dotnetmvc/p/3732029.html

一、準備工作

在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]

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

插入數據:

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

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

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

三、根據Model生成Controller及View

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

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

四、利用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>

運行生成的界面如下:

歡迎大家交流!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江津市| 阿图什市| 祁连县| 武隆县| 威海市| 上林县| 和田市| 安国市| 福建省| 江城| 东明县| 洪泽县| 慈利县| 崇信县| 保亭| 宣化县| 水城县| 丰台区| 东乡| 阳高县| 福海县| 东莞市| 云梦县| 彝良县| 吴江市| 尼勒克县| 那坡县| 东平县| 武陟县| 铜山县| 日照市| 柳州市| 资兴市| 银川市| 阳高县| 河池市| 苗栗市| 阜新市| 莫力| 庆城县| 民勤县|