麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

MVC5+EF6簡(jiǎn)單實(shí)例---以原有SQLServer數(shù)據(jù)庫(kù)兩表聯(lián)合查詢(xún)?yōu)槔?/h1>
2019-11-17 02:02:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

MVC5+EF6簡(jiǎn)單實(shí)例---以原有SQLServer數(shù)據(jù)庫(kù)兩表聯(lián)合查詢(xún)?yōu)槔?/h2> Posted on 2015-03-24 15:42 自由開(kāi)發(fā)者 閱讀(...) 評(píng)論(...) 編輯 收藏

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

通過(guò)最近一段時(shí)間對(duì)MVC5、EF6的學(xué)習(xí),可以簡(jiǎn)單的做一個(gè)小例子,其中涉及到EF讀取已有數(shù)據(jù)庫(kù)中的數(shù)據(jù),并對(duì)兩個(gè)表進(jìn)行聯(lián)合查詢(xún),顯示數(shù)據(jù)。

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

參考出處:

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

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

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

一、準(zhǔn)備工作

在SqlServer上創(chuàng)建數(shù)據(jù)庫(kù):Element

模擬兩個(gè)表并插入數(shù)據(jù):SysUser(用戶(hù)表)、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]

插入數(shù)據(jù):

二、新建MVC項(xiàng)目生成的解決方案的文件夾,對(duì)MVC的理解尚淺,不作過(guò)多的講解,請(qǐng)多看看各位大俠們的博文,能受益匪淺。要真正理解框架的涵義,分層的優(yōu)點(diǎn),多動(dòng)手,多感受,多思考。通過(guò)這幾天的學(xué)習(xí),感覺(jué)EF(Entity FrameWork)如它名字一樣,是與Model層相關(guān)的,可生成實(shí)體對(duì)象。與Controll、View應(yīng)該沒(méi)直接聯(lián)系,一開(kāi)始容易和其它層混在一塊,要分清概念和作用。(如理解不對(duì)樂(lè)意接受批評(píng)指正!)安裝EF6:

二、使用EF的Code First從原有數(shù)據(jù)庫(kù)中生成Models

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

三、根據(jù)Model生成Controller及View

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

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

四、利用ViewModel顯示多表聯(lián)合查詢(xún)

剛剛我們通過(guò)controller把從一個(gè)表SysUser中查詢(xún)的數(shù)據(jù)以SysUser(Model)實(shí)體的形式返回給Index(View)顯示,而在實(shí)際工作中我們需要聯(lián)合查詢(xún)多個(gè)表中的數(shù)據(jù)并在View中顯示。那個(gè)我們就需要借助于ViewModel,ViewModel是更接近于View的實(shí)體模型,也就是我們根據(jù)View中所要顯示的數(shù)據(jù)的需要來(lái)建立實(shí)體模型。而Model更接近于數(shù)據(jù)庫(kù)實(shí)體。下面我們就實(shí)現(xiàn)一個(gè)簡(jiǎn)單的兩表聯(lián)合查詢(xún)的小例子:查詢(xún)出SysUser表中的用戶(hù)名及它所對(duì)應(yīng)的角色名。右鍵解決方案--添加--新建文件夾(ViewModel),然后右鍵ViewModel文件夾--添加--類(lèi)新建UserRole類(lèi),并添加實(shí)體如下:

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

右鍵Controllers文件夾添加控制類(lèi),此類(lèi)繼承于Controller類(lèi)

添加代碼如下(用Linq to Entity兩表聯(lián)合查詢(xún)):

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視圖頁(yè)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>

運(yùn)行生成的界面如下:

歡迎大家交流!


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

主站蜘蛛池模板: 日韩欧美精品电影 | 97超级碰碰人国产在线观看 | 成人免费av在线 | 13一14毛片免费看 | 日韩av片在线免费观看 | 国产精品视频导航 | 国产精品jk白丝蜜臀av软件 | jizzjizzjizz少妇| 羞羞视频免费视频欧美 | 91九色视频在线播放 | 免费亚洲视频在线观看 | 精品亚洲成a人在线观看 | 中国7777高潮网站 | 国产一国产一级毛片视频在线 | 亚洲成人高清电影 | 看毛片电影| 亚洲欧美国产精品va在线观看 | 久久经典国产视频 | 欧美一级免费看 | 精品国产一区二区三区免费 | 久草在线免费资源站 | 黄色视频a级毛片 | 一级黄色在线观看 | 久久国产精品久久精品国产演员表 | 毛片三区| 国产高潮好爽好大受不了了 | 韩国十九禁高潮床戏在线观看 | 亚洲国产精品久久久久久久 | 看黄在线| 国产福利不卡一区二区三区 | 美女久久久久久久久 | 午夜精品小视频 | 午夜精品小视频 | 日本韩国欧美一级片 | 久久久一区二区三区视频 | 久久精品com | 欧美国产一区二区三区 | 久久男人 | 欧美激情猛片xxxⅹ大3 | 久草在线最新免费 | pornoⅹxxxxhd麻豆 |