目录

简易版CMS后台管理系统开发流程

MVC5+EF6 简易版CMS(非接口) 第一章:新建项目

MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型

MVC5+EF6 简易版CMS(非接口) 第三章:数据存储和业务处理

MVC5+EF6 简易版CMS(非接口) 第四章:使用业务层方法,以及关联表解决方案

上一章介绍了,如何建数据层和业务,以及各层之间的引用过关系

这章主要讲解怎么使用业务层的方法。

以及普遍遇到的EF关联查询的问题解决方案

1、在FytMsys.Web文件夹下建FytMsys.Web应用程序,选择MVC  MVCAPI  单元测试

在FytMsys.Web建一个帮助类库(目前主要实例化业务层也EF上下文的方法)

FytMsys.Web引用Domain.Entity、BusinessLogic.Server

建好后,如图:

在FytMsys.Helper类库下增加类OperateContext

并添加引用关系Domain.Entity、BusinessLogic.Server

并通过NuGet添加EF

类里面的代码如下:

/// <summary>
/// 公用类实例化业务对象
/// </summary>
public class OperateContext<T> where T : class,new()
{
public static BaseServer<T> SetServer = new BaseServer<T>();
} /// <summary>
/// 公共实例化数据仓储
/// </summary>
public class OperateSession
{
public static FytSysDbContext SetContext = new FytSysDbContext();
}

在FytMsys.Web应用程序下的Controllers文件夹下HomeController做测试操作

增加代码

//获得一个Admin的实体对象,根据ID=2
public ActionResult GetModels()
{
var model = OperateContext<Domain.Entity.tb_Admin>.SetServer.GetModel();
return View();
}

通过这个就可以获得一个对象,并通过Admin的对象,可以查询角色表中的角色名称

表之间的关系:admin表中有,部门表ID ,角色表ID

/*==================================================*/

/*==================================================*/

如果控制器返回Json,EF就会报错,因为表的关系是相互的,在序列化的时候,就造成了死循环,所以Json(model)会抛出异常

/*==================================================*/

/*==================================================*/

2种 解决方法

第一:通过DTO重写用户表,部门表,角色实体

第二:聚合设计(暂不考虑)

第一种方法,太过麻烦,还在在模型类库中建3个类,如果有100个表,50个关系,建起来把骚年也累趴蛋了

通过和大神(台湾的)沟通,他给出的方法是通过Json.Net方式来做或者通过Linq

方案有了,那开整,解决代码如下:

//获得一个Admin的实体对象,根据ID=2
public ActionResult GetModels()
{
//var model = OperateContext<Domain.Entity.tb_Admin>.SetServer.GetModel(2);
var m = OperateSession.SetContext.tb_Admin.Select(c => new { RoName = c.tb_AdminRole.roleName, c.RealName, c.LoginName });
return Json(m, JsonRequestBehavior.AllowGet);
}

这次调用的是OperateSession.SetContext     EF上下直接通过Linq查询实体,返回一个新的模型,这样Json可以满足基本条件了

框架搭好,下一步就是UI设计和前台代码编写了

待续........................

讨论群:86594082    欢迎渣渣和屌丝的加入(尤其是女女)

MVC5+EF6 简易版CMS(非接口) 第四章:使用业务层方法,以及关联表解决方案的更多相关文章

  1. MVC5+EF6 简易版CMS(非接口) 第三章:数据存储和业务处理

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  2. MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  3. MVC5+EF6 简易版CMS(非接口) 第一章:新建项目

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  4. 简易版CMS后台管理系统开发流程

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  5. 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具

    计算机图形学 opengl版本 第三版------胡事民 第四章  图形学中的向量工具 一   基础 1:向量分析和变换   两个工具  可以设计出各种几何对象 点和向量基于坐标系定义 拇指指向z轴正 ...

  6. 《数据结构与算法(C语言版)》严蔚敏 | 第四章课本案例

    //二叉树的顺序存储表示 #define MAXTSIZE 100 typedef TElemtype SqBiTree[MAXTSIZE]; SqBiTree bt; //二叉树的二叉链表存储表示 ...

  7. 算法导论(第三版)Exercises4.2(第四章二节)

    4.2-1(计算结果) 18  14 62  66 4.2-2(Strassen算法计算矩阵乘法) void multiplyMatrix(int a[], int b[], int n, int r ...

  8. o'Reill的SVG精髓(第二版)学习笔记——第四章

    第四章:基本形状 4.1线段 SVG可以使用<line>元素画出一条直线段.使用时只需要指定线段起止点的x和y坐标即可.指定坐标时可以不带单位,此时会使用用户坐标,也可以带上单位,如em. ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)

    开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 任务调度系统界面 http: ...

随机推荐

  1. 正则表达式test验证的“bug”

    在使用正则表达式对某些字符串进行验证时,我们常常会使用到test方法,而该方法也隐藏着一个陷阱,今天就让我们来看一下这个问题. var str = 'hello jack, hello rose'; ...

  2. TENDA-F322路由器管理工具

    https://yunpan.cn/cYsfNxJLfVnUY (提取码:d0ae)

  3. nginx相关的一些记录

    http redirect to https: if ($http_cf_visitor ~ '"scheme":"http"'){ rewrite ^/(.* ...

  4. MongoDB(四)mongodb设置用户访问权限

    我们知道MySQL在安装的时候需要我们设置一个数据库默认的用户名和密码,mongodb也不例外,不过mongodb是默认的没有设置访问限制的,不需要输入用户名和密码都可以访问的,但是这样会十分的不安全 ...

  5. AC 设置DMZ口上网

  6. 使用Plsql将Excel数据导入Oracle数据库

    1.在plsql页面,Tools-->ODBC Importer... 2.配置被导入的excel files 3.选择excel文件 4.选择Excel中要被导入的的sheet工作簿,选择之后 ...

  7. Ninject之旅之六:Ninject约定

    摘要 在小的应用系统中一个一个注册一些服务类型不怎么困难.但是,如果是一个实际的有上百个服务的应用程序呢?约定配置允许我们使用约定绑定一组服务,而不用一个一个分别绑定. 要使用约定配置,需要添加Nin ...

  8. JS 中的事件绑定、事件监听、事件委托

    事件绑定 要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数.所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称. 在JavaScript中,有 ...

  9. Access、Hybrid和Trunk

    以太网端口有三种链路类型:Access.Hybrid和Trunk.Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口:Trunk类型的端口可以属于多个VLAN,可以接收和发送多个VL ...

  10. eclipse的快捷键(写给eclipse新手)

    Eclipse常用的快捷键 1.常用的快捷键 Alt+/:常用于补全单词.方法,以及内容辅助,可以省很多事情 Ctrl+1:用于全局,快速修正 Ctrl+D  删除整行 Ctrl+F   用于全局 , ...