博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC使用Entity Framework Code First,用漂亮表格显示1对多关系
阅读量:4942 次
发布时间:2019-06-11

本文共 3030 字,大约阅读时间需要 10 分钟。

部门和职员是1对多关系。用一个表格列出所有部门,并且在每行显示该部门下的所有职员名称。如下:

 

部门和职员的Model:

using System.Collections.Generic;namespace MvcApplication1.Models{    public class Department    {        public int Id { get; set; }        public string Name { get; set; }        public string Location { get; set; }        public List
Employees { get; set; } }}namespace MvcApplication1.Models{ public class Employee { public int Id { get; set; } public string Name { get; set; } public string Gender { get; set; } public int Salary { get; set; } public Department Department { get; set; } }}

 

需要一个Entity Framework的上下文,具体是派生于DbContext类:

using System.Data.Entity;namespace MvcApplication1.Models{    public class EmployeeDbContext : DbContext    {        public DbSet
Departments { get; set; } public DbSet
Employees { get; set; } }}

写一个Repository类,获取Department的同时,通过Eager Loading把该Department下的所有Employee加载下来:

using System.Collections.Generic;using System.Linq;using MvcApplication1.Models;namespace MvcApplication1.Repository{    public class EmployeeRepository    {        public List
GetDepartments() { using (EmployeeDbContext employeeDbContext = new EmployeeDbContext()) { return employeeDbContext.Departments.Include("Employees").ToList(); } } }}

 

EmployeeController中:

using System.Web.Mvc;using MvcApplication1.Repository;namespace MvcApplication1.Controllers{    public class EmployeeController : Controller    {        EmployeeRepository employeeRepository = new EmployeeRepository();        public ActionResult Index()        {            return View(employeeRepository.GetDepartments());        }    }}

 

Employee/Index.cshtml强类型视图显示,使用由提供的一个漂亮表格样式呈现内容。

@model IEnumerable
@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml";}
@if (Model.Count() > 0){
@foreach (var item in Model) {
}
部门列表
部门名称 地址 包含员工
@item.Name @item.Location @{ Html.RenderPartial("Employees", @item.Employees);}
}else{
暂无记录~~}

当显示Department的Employees集合属性的时候,我们通过Employee/Employees.cshtml强类型部分视图遍历集合,显示该部门下的职员名称。

@model IEnumerable
@if (Model.Count() > 0){ var result = string.Empty; foreach (var item in Model) { result += item.Name + ","; }
@result.Substring(0, @result.Length -1)}else{
该部门下暂无员工~~}

 

配置Web.config中的连接字符串,其中name属性值与派生于DbContext的EmployeeDbContext类名一致:

...

 

→运行,页面显示"暂无记录~~",因为数据库中还没数据。

→打开Sql Server Management Studio,发现已经创建好了EFSample数据库以及表,插入一些数据。
→再次运行,即可看到效果。

□ 参考资料

转载于:https://www.cnblogs.com/darrenji/p/3780522.html

你可能感兴趣的文章
操作系统简介
查看>>
【IntelliJ 】IntelliJ IDEA 15 创建maven项目
查看>>
Maven入门---修改tomcat版本及端口及访问路径(四)
查看>>
Ajax异步请求struts的JSON机制(省市区三级联动)
查看>>
mysql中的union用法以及子查询综合应用
查看>>
jQuery使用总结
查看>>
Oracle数据库事物隔离级别
查看>>
多变的形状
查看>>
Navicat For Mysql快捷键
查看>>
Git学习笔记4
查看>>
【Android】用Cubism 2制作自己的Live2D——官方App样例源码学习(2)!
查看>>
利用锚点制作简单索引效果
查看>>
Photoshop
查看>>
webstorm使用说明
查看>>
项目练习计划
查看>>
Xshell远程登录
查看>>
@RequestParam与@PathVariable的区别
查看>>
C语言之break和continue
查看>>
jquery.form.js使用
查看>>
LINQ to Entities 不支持 LINQ 表达式节点类型“ArrayIndex”。
查看>>