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

目录

简易版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(2);
            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    欢迎渣渣和屌丝的加入(尤其是女女)

时间: 2024-10-05 22:35:41

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

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

目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口) 第三章:数据存储和业务处理 MVC5+EF6 简易版CMS(非接口) 第四章:使用业务层方法,以及关联表解决方案 先来了解下各项的引用关系 FytCms.DALMSSQL=>Domain.Entity.EntityFramework BusinessLogic.Server=>FytCms.D

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

1.建立数据模型,(现有数据库表,在建模型)非ORM模式,  也可以使用Code First模式 找到实体模型 选择在数据库生成 下一步,链接数据库,通过Sql方式,输入用户名密码链接测试,选择对应的数据库 点击确定 选择是,在链接字符串包含敏感字符 选择将APP.Config设置另存为 更改需要自己的Ef上下文名称 继续 勾选单复数形式 选择要生成的表 更改模型的命名空间如 模型生成完毕,具体描述图上都有,不懂可加群86594082 沟通 下一章介绍 数据操作类方法编写

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

1.新建一个空的解决方案 2.在空的解决方案下建几个文件夹,以便方便管理,在对应的文件夹,简历对应的类库和相应的Web端应用程序,如图: 说明: BusinessLogic.Server=业务处理,可以建多个,都调用Core.Repository数据层方法 Core.Repository=数据操作,通过EF操作数据库CRUD Domain=数据模型,使用exmd模型管理数据库表 Infrastructure=公共方法类库可建多个 FytMsys.Web=webUI 标识,以及单元测试,帮助类等

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

前言:最近公司做了几版后台管理系统,都不太满意.正好赶上51放假期间,我打算自己在花点时间做一个. 后台的界面设计,程序编写都是由我自己一个人来完成,如果有感兴趣的朋友可以和我一起来做. 开发环境是VS2013+MVC5+EF6 数据库采用Sql server2012 IIS7.5 制作工具HBuilder 今天先来看看搭建个大概框架放到下一章吧 下一章:FytMsys    系统框架搭建 有感兴趣的朋友可以加我群:86594082

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

开发工具:VS2015(2012以上)+SQL2008R2以上数据库  您可以有偿获取一份最新源码联系QQ:729994997 价格 666RMB  升级后界面效果如下: 日程管理   http://www.cnblogs.com/ymnets/p/7094914.html 任务调度系统界面 http://www.cnblogs.com/ymnets/p/5065154.html 系统权限全套完整图  http://www.cnblogs.com/ymnets/p/5065201.html 系统

使用 LinkedBlockingQueue 实现简易版线程池

前一阵子在做联系人的导入功能,使用POI组件解析Excel文件后获取到联系人列表,校验之后批量导入.单从技术层面来说,导入操作通常情况下是一个比较耗时的操作,而且如果联系人达到几万.几十万级别,必须拆分成为子任务来执行.综上,可以使用线程池来解决问题.技术选型上,没有采用已有的 ThreadPoolExecutor 框架,而使用了自制的简易版线程池.该简易版的线程池,其实也是一个简易版的[生产者-消费者]模型,任务的加入就像是生产的过程,任务的处理就像是消费的过程.我们在这里不去讨论方案的合理性

使用nodeJS创建API接口,连接mysql数据库(新手向简易版)

博主在学习安卓课程做期末程序的时候就一直想自己做API了,结果网上的教程感觉都太杂,很多都文不对题,找不到一个明确的思路,结果就只能放弃改用jdbc实现数据库交互,现在学了前端,又接触了一点nodeJS之后,才终于有了思路,最近也成功给自己放在服务器上的网站部署了API.现在就来分享一下,也顺便给自己留个备份. ps:只是自己突然想到的做法,而且个人觉得真的是简易版,可能不标准,但亲测能用. 一.前期准备 首先声明:不懂也没关系,直接仿照代码,需要修改的地方我会用红色标注出来,不过mysql一定

Android学习之路——简易版微信为例(二)

1 概述 从这篇博文开始,正式进入简易版微信的开发.深入学习前,想谈谈个人对Android程序开发一些理解,不一定正确,只是自己的一点想法.Android程序开发不像我们在大学时候写C控制台程序那样,需要从main开始写代码逻辑,大部分逻辑控制代码都由自己来实现.事实上,Android已经为我们提供了一个程序运行的框架,我们只需要往框架中填入我们所需的内容即可,这里的内容主要是:四大组件——Activity.Service.ContentProvider.BroadCast.在这四大组件中,可以

依赖注入[4]: 创建一个简易版的DI框架[上篇]

本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章(<控制反转>.<基于IoC的设计模式>和< 依赖注入模式>)从纯理论的角度对依赖注入进行了深入论述,为了让读者朋友能够更好地理解.NET Core的依赖注入框架的设计思想和实现原理,我们创建了一个简易版本的DI框架,也就是我们在前面文章中多次提及的Cat.我们会上下两篇来介绍这个被称为为Cat的DI框架,上篇介绍编程模型,下篇关注设计实现.[源代码从这里下载] 目录一.DI容器的层