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(非接口) 第四章:使用业务层方法,以及关联表解决方案的更多相关文章
- MVC5+EF6 简易版CMS(非接口) 第三章:数据存储和业务处理
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
- MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
- MVC5+EF6 简易版CMS(非接口) 第一章:新建项目
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
- 简易版CMS后台管理系统开发流程
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
- 计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具
计算机图形学 opengl版本 第三版------胡事民 第四章 图形学中的向量工具 一 基础 1:向量分析和变换 两个工具 可以设计出各种几何对象 点和向量基于坐标系定义 拇指指向z轴正 ...
- 《数据结构与算法(C语言版)》严蔚敏 | 第四章课本案例
//二叉树的顺序存储表示 #define MAXTSIZE 100 typedef TElemtype SqBiTree[MAXTSIZE]; SqBiTree bt; //二叉树的二叉链表存储表示 ...
- 算法导论(第三版)Exercises4.2(第四章二节)
4.2-1(计算结果) 18 14 62 66 4.2-2(Strassen算法计算矩阵乘法) void multiplyMatrix(int a[], int b[], int n, int r ...
- o'Reill的SVG精髓(第二版)学习笔记——第四章
第四章:基本形状 4.1线段 SVG可以使用<line>元素画出一条直线段.使用时只需要指定线段起止点的x和y坐标即可.指定坐标时可以不带单位,此时会使用用户坐标,也可以带上单位,如em. ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(1)-前言与目录(持续更新中...)
开发工具:VS2015(2012以上)+SQL2008R2以上数据库 您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB 升级后界面效果如下: 任务调度系统界面 http: ...
随机推荐
- 在sql server使用链接服务器中访问mysql
----创建ODBC链接EXEC sp_addlinkedserver @server = 'MySQL', @srvproduct='MySql' , @provider = 'MSDASQL', ...
- Ubuntu实现wifi热点
系统:Ubuntu14.04 方法一: 打开网络连接,新建wifi,设置SSID和密码,完成设置后保存,再连接到隐藏的wifi,选择刚建立好的连接即可 优点:简单方便 缺点:建立的是Ad-hoc模式信 ...
- windows下的php rabbit mq安装、配置
http://www.cnblogs.com/shanyou/p/4067250.html 这篇博文写的rabbit mq和erlang的安装以及rabbitmq可视化插件的一些操作 接下去开始安装P ...
- maven增加自定义jar包
1.博客来源: http://www.cnblogs.com/leiOOlei/p/3356834.html 导入平台SDK的方法 mvn install:install-file -DgroupId ...
- C++ 内存的分配方式 (摘选自网络)
在c++中有三种分配内存的方式: 在许多大大公司在面试的时候很可能考到的内容.在这里和大家分享了!1. 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量.常量.2. 栈上分配 ...
- 锋利的js之验证身份证号
我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构 公民 ...
- MYSQL 分组排序
http://www.cnblogs.com/merru/articles/4626045.html SELECT a.shop_id, a.price, count(*) as rankFROM m ...
- eclipse连接外部tomcat进行debug
首先,在tomcat/bin目录下找到编辑catalina.bat,在 rem $Id: catalina.bat 1344732 2012-05-31 14:08:02Z kkolinko $rem ...
- HashMap、HashTable、LinkedHashMap和TreeMap用法和区别
Java为数据结构中的映射定义了一个接口java.util.Map,它有四个实现类,分别是HashMap.HashTable.LinkedHashMap和TreeMap.本节实例主要介绍这4中实例的用 ...
- 转载:java程序打包成jar 配置文件信息路径
一个普通的java project,里面引用了config.properties配置文件,将项目打成Runnable jar,然后将config.properties放到打包后的jar路径下,执行该j ...