EF应用带来的好处

让大家看一下改版前的代码和我改版之后的代码。你就明白了。。

背景:有学生表,也有一张班级表。通过在学生表中加入外键班级ID。现在我需要查询到学生表的信息 并查询到相关的班级信息 同时保存在学生的数据契约中。

改版前:

代码块一:

  #region (考试接口)查询所有的在校学生+List<Student> QueryAllStudent()

        /// <summary>
        /// (考试接口)查询所有的在校学生 包括班级名称
        /// </summary>
        /// <returns></returns>
        public List<Student> QueryAllStudent()
        {
            List<BasicStudentEntity> result0 = (List<BasicStudentEntity>)studentInfoService.LoadPageItems(u => u.IsGraduated == 0 && u.IsEnabled == 1, u => u.StudentNo, true).ToList();

            //给学生添加班级信息
            List<Student> StudentandClassName = QueryStudentandClassName(StudnetandSchool);

            return StudentandClassName;
        }
        #endregion

上面代码中调用下面这个查询班级信息的方法。通过循环匹配实现

代码块二:

        #region 查询所有学生所在的班级信息 用在前台显示+List<Student> QueryStudentandClassName(List<BasicStudentEntity> result)
        /// <summary>
        /// 查询所有学生所在的班级信息 用在前台显示
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        public List<Student> QueryStudentandClassName(List<BasicStudentEntity> result)
        {
            List<BasicClassEntity> classresult = (List<BasicClassEntity>)classInfoService.LoadEnities(u=>u.IsEnabled==1).ToList();
            List<BasicOrganizationEntity> schoolresult = (List<BasicOrganizationEntity>)organizationInfoService.LoadEnities().ToList();

            for (int studentCount = 0; studentCount < result.Count(); studentCount++)
            {
                for (int classCount = 0; classCount < classresult.Count(); classCount++)
                {

                    if (result[studentCount].ClassID == classresult[classCount].ClassID)
                    {
                        result[studentCount].BasicClassEntity.ClassName = classresult[classCount].ClassName;

                    }

                    classCount++;
                }

                studentCount++;
            }

            return ChangeStudentModelOut(result);
        }

        #endregion

下面这个代码是查询班级信息会调用到的。

代码块三:

        #region 学生管理公共方法 将查询数据库得到的实体转换成MVC中的model
        /// <summary>
        /// 学生管理公共方法 将查询数据库得到的实体转换成MVC中的model
        /// </summary>
        /// <param name="enstudentList"></param>
        /// <returns></returns>
        public List<Student> ChangeStudentModelOut(List<BasicStudentEntity> enstudentList)
        {

            List<Student> studentList = new List<Student>();
            foreach (var item in enstudentList)
            {
                Student student = new Student()
                {

                    StudentID = item.StudentID,
                    StudentNo = item.StudentNo,
                    Sex= item.Sex,
                    Name= item.Name,
<pre name="code" class="csharp">                    ClassName= item.BasicStudentEntity.ClassName,

}; studentList.Add(student); } return studentList; } #endregion


先大概说一下,改版前自己的实现思路。1查询到学生表中的学生信息。2查询到班级表中的班级信息 3通过循环学生列表和班级列表一一匹配两个表中班级ID相同的数据行,如果相同则将该数据行的班级名称赋值给学生。代码写完了,我也冒冷汗了。(代码二)试想如果现在哪怕只有一个高校在用ITOO,那么假设2万学生,有500个班级的话,查询一次要循环20000*500次。。。

额,我也是醉了。。

后来反复琢磨优化的事,竟然突然明白过来。有人会想问改版后的代码是什么样的?直接删除代码二。 因为在EF中本身就是能够通过一个表的外键去访问到另一个表的实体再去访问另一个表的实体属性。唉, 不怕不知道,就怕不知道。。

时间: 2024-10-14 00:44:37

EF应用带来的好处的相关文章

mes系统为企业带来多少好处?

由于MES系统反映了作业人员.机器.设备.物料和工具等资源的使用状态的实时信息,并就刚刚完工的作业活动向ERP和有关人员报告.因此,使用其中的资源状态管理功能,MES除能及时提供更详实的资源可用量信息,以便于向ERP进行更可行的资源计划,同时,也使有关人员不仅可及时了解到作业效率,资源效率等实际状况,还可以对作业中隐藏的问题,运作效率改善等进行及时的处理和更正. 通过生产单元分配功能的使用,MES能将生产产品的原物料连同作业指令一起送达相应的加工单元,以指令开始一个工序或工步的操作,极大地提高了

单页web应用是什么?它又会给传统网站带来哪些好处?

什么是单页应用? 单页应用是指在浏览器中运行的应用,它们在使用期间不会重新加载页面.像所有的应用一样,它旨在帮助用户完成任务,比如"编写文档"或者"管理Web服务器".可以认为单页应用是一种从Web服务器加载的富客户端. 单页应用给传统网站带来的好处? 相对于传统网站,我们认为单页应用的主要好处是: 它提供了更加吸引人的用户体验.单页应用可以做到一举两得:桌面应用的即时性和网站的可移植性和可访问性. 单页应用可以和桌面应用一样渲染-单页应用只需要重绘界面上需要变化的

CRM客户关系管理系统能够为企业带来什么好处?

CRM客户管理系统给企业带来的好处是可以肯定的,那到底使用CRM有什么意义,根据个人使用CRM客户管理系统的经验,总结出以下几个使用CRM的好处: 提升了企业认识客户的能力 企业的一切营销活动必须紧紧围绕"以市场为导向,以客户为中心"这个主线.企业只有将客户真正重视起来,把客户关系管理提高到企业战略层面上考虑,才可能成为以"客户为中心"的现实受益者.CRM系统的价值正在于此,实时的数据录入,多维度的数据记录,让企业对客户的认识有了整体的提高. 规范企业流程 通过CR

控制反转和spring在项目中可以带来的好处

Spring实例化Bean的三种方式分别是: 1,xml配置使用bean的类构造器 <bean id="personService" class="cn.service.impl.PersonServiceBean"></bean> 2,xml配置+factory类,使用静态工厂方法实例化 <bean id="personService2" class="cn.service.impl.PersonServ

逸管家:共享消费会给消费者带来什么好处?

? 共享销售会给消费者带来什么好处? 随着"互联网+"时代商业模式的深入,新一波的共享经济浪潮不断席卷全球.在 2015 年的达沃斯论坛上,×××总理就提出,全球已进入"分享经济时代",利润分享模式将产生很大的变化,即便是消费者亦可享有分润收益,成为一名"消费商". 目前全球分享经济呈快速发展趋势,成本小,速度快,众人创富,形成财富合理的分配格局.可以预见,消费者成长为消费商,将是一场浩大的革命!这场革命将彻底颠覆我们的商业模式! "消

小程序能为实体商户带来什么好处?小程序能为企业提高收益吗|极限工坊淘小咖

从传统的互联网时代产生新浪,网易,搜狐等三大新闻门户,到电商时代的阿里,京东,苏宁易购等电商巨头,再到移动互联网APP时代的滴滴,美团,饿了么等移动超级入口,公众号时代的全民自媒体时代. 如今是小程序的时代,有一次让所有人站在了同一起跑线,小程序一直为誉为:实体店实现互联网化的希望之光.每家企业商户都需要一个小程序来进行提前布局,抢占市场先机. 极限工坊淘小咖为大家总结下小程序到底能为实体店带来哪些好处? 1.帮助实体店提升运营效率 小的百货.餐饮店使用上小程序,可以弥补渠道管理.人力管理上的不

大前端 前后端分离带来的好处

大前端 前后端分离带来的好处:1. 前后端分离开发,相互之间的影响很小2. 使用 webpack,模块化打包前端代码3. 在开发时,可以做到代码热替换,可以使用 babel,可以使用 css 预处理器等等4. 打包时,打包代码的同时还可以做到按需加载代码,静态文件地址自动写入 html 标签,压缩 css.js 代码.压缩图片5. NPM 管理依赖 除了享受不到前后端分离的优点外,还会1. 放弃 ES6,只能写 ES5 以下版本的代码,且要自己处理一些兼容问题2. 不能够使用 A.R.V 三大框

深圳北易信息:网站能给企业带来什么好处,重要吗

随着互联网时代变成移动互联网时代,网站已经成为企业的宣传推广重要的方式,所以大小企业都有着自己的网站,网站不止能为企业推广宣传,还能帮企业销售产品,给企业带来的好处是非常的大.对于还没有网站的企业可以往下看完,网站能给企业带来什么好处,网站建设重不重要,就有了心中的答案. 一.宣传企业提高品牌 无论是大企业,还是小企业,都有自己的品牌,那么想提高品牌也是每个企业所需要的,这时候网站就很重要了,有了网站后,用户可以通过搜索引擎上进入网站,了解到企业可以看企业产品等内容.相当于开了一家实体店铺,但是

共享充电宝投放实体商铺为商家带来什么好处?

进入主题之前 先跟你们聊下普遍人存在的一个通病. 那就是懒!!!共享充电宝投放实体商铺为商家带来什么好处? 不要低估当代人的懒惰程度.不要低估当代人的懒惰程度. 不要低估当代人的懒惰程度. 智能手机一直在努力干掉用户钱包和钥匙,取代银行卡.取代公交卡.取代钥匙,既然钱包钥匙都不愿意带,谁愿意带个沉甸甸的充电宝呢? 社会及科技的进步,就是让一切都变得越来越简单,越来越方便. 外卖.跑腿.扫地机器人.洗碗机.电动牙刷--这些我们越来越熟悉.越来越离不开的关键词,无一不在揭示:这是一个"懒人"