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

参考出处:

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

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

http://www.cnblogs.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.cnblogs.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>

转载于:https://www.cnblogs.com/lacey/p/6396639.html

MVC5+EF6简单实例---以原有SQLServer数据库两表联合查询为例相关推荐

  1. Android Sqlite数据库多表联合查询

    Android Sqlite数据库多表联合查询示例 工作上用数据库存储文件还是很便利的,所以有时候发现一张表存储数据感觉数据结构不是很清晰的时候,就需要新加第二张表或者多张表来进行联合查询对象信,一般 ...

  2. oracle数据库多表联合查询

    高级查询(多表连接查询): 等值连接    select s.sname,e.cno,e.degree from student s,score e where s.sno=e.sno; 左外连接 l ...

  3. 数据库多表联合查询附简单例子

    多表联合查询 多表联合查询可以通过连接运算实现,而连接运算又可以通过广义笛卡尔积后在进行选择运算来实现. Select 多表联合查询语句 Select 列名 [[,列名]...] from 表名1,表 ...

  4. 数据库多表联合查询和分组查询

    ---------------------  多表联合查询 理论依据:笛卡尔积 通过笛卡尔乘积,把两个或者多个表变为一个大表,里面包含了有效的,无效的记录(需要加条件进行过滤数据) 例如:查询学生的姓 ...

  5. SQLSERVER 数据库或表修复(DBCC CHECKDB)

    ** SQLSERVER 数据库或表修复(DBCC CHECKDB) ** 1. DBCC CHECKDB 重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复 ...

  6. SQLServer数据库的表管理

    第4章-SQLServer数据库的表管理 一.表的基本概念 Ø表是包含数据库中所有数据的数据对象,表定义是一列集合 Ø数据在表中的组织方式与在电子表格中相似,都是按行和列的格式组织的 Ø每一行代表一条 ...

  7. SQLSERVER数据库、表的创建及SQL语句命令

    SQLSERVER数据库.表的创建及SQL语句命令 备份,还原,创建,删除,查询,修改 ** 数据库定义及操作命令:** 按照数据结构来组织.存储和管理数据的仓库.由表.关系以及操作对象组成,把数据存 ...

  8. 数据库实验:数据库和表、查询、视图与安全性、存储过程及游标、触发器、综合实验-水果商店进阶

    数据库实验:数据库和表.查询.视图与安全性.存储过程及游标.触发器.综合实验-水果商店进阶 实验一.数据库和表 源码1: 源码2: 小结 实验二.查询 源码 小结 实验三.视图.安全性 源码: 小结 ...

  9. android sqllite数据库的多表联合查询

    Android数据库有时候需要多表联合查询,经过学习,可以用以下代码 Currsor = db.rawQuery("select * from tablea as a left outer ...

  10. ORACLE数据库多表关联查询效率问题解决方案

    ORACLE数据库多表关联查询效率问题解决方案 参考文章: (1)ORACLE数据库多表关联查询效率问题解决方案 (2)https://www.cnblogs.com/baib/p/5086777.h ...

最新文章

  1. 概率统计概念复习:MAPMLE
  2. 阿里面试题Linux curl命令详解
  3. nohup-真正的Shell后台运行
  4. GoJS v1.8.27 去水印方法
  5. Python基础之函数与装饰器
  6. 牛客网_PAT乙级_1022挖掘机技术哪家强(20)【class vector sort排序、删除重复元素】
  7. Android开发学习---使用Intelij idea 13.1 进行android 开发
  8. 联想办公计算机,办公娱乐两不误!联想这些笔记本电脑不容错过
  9. python大型项目经验_图像分类:13个Kaggle项目的经验总结
  10. android wifi连接手机,Android手机无线连接利器-AirDroid
  11. OpenCV示例学习(七):离散傅里变换(DFT)算子:getOptimalDFTSize(),copyMakeBorder(),magnitude(),log(),normalize()
  12. linux 文件理解,linux文件系统理解
  13. Sklearn 与 TensorFlow 机器学习实用指南(补档)
  14. echarts-formatter
  15. spring之httpclient doget请求
  16. 从360和QQ打架看客户端的高精尖武器技术发展:自己留着,防止忘记!
  17. 关于matlab表情包,matlab表情包 - matlab微信表情包 - matlabQQ表情包 - 发表情 fabiaoqing.com...
  18. 缺陷报告单写作准则(5C)
  19. 【图像处理】多光谱 波长波段划分 主要波段特性 植被遥感原理 典型植被指数
  20. apache网站漏洞修复解决办法

热门文章

  1. python科学计算之Pandas使用(二)
  2. 一段平平无奇的秋招经历
  3. 具体数学-第12课(数论进阶与组合数入门)
  4. numpy—np.random.multivariate_normal
  5. 机器学习基础算法13-回归实例-时间序列分析ARIMA
  6. LeetCode刷题——283. 移动零
  7. 一文弄懂nginx反向代理和负载均衡
  8. 机器学习入门——图解支持向量机
  9. iPhone SDK开发基础之使用UITabBarController组织和管理UIView
  10. 《机器学习实战》原书数据与代码(基于Python3)汇总