目录

简易版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. 读艾伦的jQuery的无new构建,疑惑分析——jquery源码学习一

    背景: 有心学习jquery源码,苦于自己水平有限,若自己研究,耗时耗力,且读懂之日无期. 所以,网上寻找高手的源码分析.再经过自己思考,整理,验证.以求有所收获. 此篇为读高手艾伦<jQuer ...

  2. PSP个人(观众界面)

    需求:作为一个观众,我希望了解某一场比赛的比分,以便了解赛况.(满意条件:精确到每一局的结果比分) 需求分析:实现查询数据库中每一局的分数并用界面显示. 生成设计文档: 运用三层架构,实现软件的基本功 ...

  3. 2015-08-26: GCC编译选项(转载)

    gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告:           -Waddress -Warray-bounds (only with -O2) ...

  4. python 赋值、表达式

    赋值的特性 赋值语句建立对象引用 变量名在首次赋值时会被创建 变量名在引用前必须先赋值 赋值语句的形式 序列赋值 >>> A, B = 1, 2 >>> print ...

  5. git入门札记

    分布式版本控制(个人主机即版本库,有一台作为“中央服务器”来方便“交换”修改,管理修改 而非文件) vs.  SVN CVS git 安装后设置: git config - -global user. ...

  6. MySQL索引原理及慢查询优化(转)

    add by zhj:这是美团点评技术团队的一篇文章,讲的挺不错的. 原文:http://tech.meituan.com/mysql-index.html MySQL凭借着出色的性能.低廉的成本.丰 ...

  7. ExtJs6.0.0随笔

    环境:extJs6.0.0GPL,对应SenchaCmd-6.0.2-windows-64bit(注意版本不能太高). 步骤: 1.安装senchaCmd 2.运行生成demo: http://doc ...

  8. nginx https配置

    nginx的https服务配置如下(在server中配置): ssl on; ssl_session_cache shared:SSL:50m; ssl_session_timeout 1d; ssl ...

  9. 关于Comparable与Comparator

    首先说明一下这两个都是用来排序的, 只是应用起来有点差别而已. 有以下情景: 对于 List<String> list = new ArrayList<String>(); 我 ...

  10. zookeeper集群管理配置优化总结

    1:默认jvm没有配置Xmx.Xms等信息,可以在conf目录下创建java.env文件 export JVMFLAGS="-Xms512m -Xmx512m $JVMFLAGS" ...