全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
服务层服务层 Service 代码剖析代码剖析 版本号版本号重要说明重要说明人员人员时间时间 V1 0初始版本 熊伟2013 12 27 以对实体对象 PROJECT 进行操作的服务类 PROJECTService 自动生成代码为例 说明服 务层代码中完成的功能 以加深对系统的了解 所有的服务类都继承于 AbstractService 抽象类 如下图 public partial class PROJECTService AbstractService 创建服务类时 需要传入客户端环境信息 如当前用户 当前语言等标志 使用抽象类初始化服务类 保留客户端环境的实例变量 public PROJECTService ClientCulture culture base culture 获取所有实体对象 public List GetList 前置条件处理 可以用于根据用户权限返回部分数据 而不是全部数据 无需处理时 则不用实现此方法 List list this BeforeQueryAction if Object Equals list null return list 调用EF 获取所有实体 list container PROJECT ToList 后置结果处理 可以对实体对象列表进行相应处理 this QueryAction list return list 根据查询条件获取满足条件的实体列表 查询条件是Func委托 最简单的是p p Code 1 复杂的可以使用动态 Lamda代码生成 如以下形式 ParameterExpression c Expression Parameter typeof T p Expression exp1 Expression Equal Expression Property c PROJECT Expression Constant project Expression exp2 Expression Equal Expression Property c TASK Expression Constant task Expression Func expFunc Expression Lambda Func Expression Or exp1 exp2 c return expFunc Compile public List GetList Func whereLambda 前置条件处理 可以用于根据用户权限返回部分数据 而不是全部数据 无需处理时 则不用实现此方法 List list this BeforeQueryByConditionAction whereLambda if Object Equals list null return list 调用EF 获取满足条件的实体列表 list container PROJECT Where whereLambda ToList 后置结果处理 可以对实体对象列表进行相应处理 this QueryByConditionAction list return list 根据主键获取相应实体 public PROJECT Get System String guid 调用EF 根据主键获取实体 PROJECT project container PROJECT Find guid 后置结果处理 可以对所获取的实体对象进行相应处理 this QueryOneAction project return project 增加对象到数据库 public Boolean Add PROJECT project 对象增加前置处理 可以判断内容合法性 如唯一码是否重复等 如中止则可以直接抛出 错误即可 this BeforeAddAction project 向EF中增加实体 container PROJECT Add project 向数据库中增加实体 Boolean result container SaveChanges 0 对象增加后置处理 if result this AfterAddedAction project return result 修改数据库中对象 public Boolean Change PROJECT project 对象增加前置处理 可以判断内容合法性等 this BeforeChangeAction project 覆盖EF中的实体对象 并将对象状态设置为已修改 从而产生Update语句 container PROJECT Attach project container Entry project State System Data EntityState Modified 向数据库中修改实体 Boolean result container SaveChanges 0 对象修改后置处理 if result this AfterChangedAction project return result 删除数据库中对象 public Boolean Delete PROJECT project 对象增加前置处理 如保留数据库原始内容备份等 this BeforeDeleteAction project 向EF中附加要删除的内容 并将对象状态设置为已删除 从而产生Delete语句 container PROJECT Attach project container Entry project State System Data EntityState Deleted 向数据库中删除实体 Boolean result container SaveChanges 0 对象修改后置处理 if result this AfterDeletedAction project return result 当对象具有主 子表结构时 修改方法会有所区分 如下图 修改用户信息 用户信息 public Boolean Change SYSUSER sysuser 调用主子表Change方法 同时更新主子数据 return this Change sysuser null 修改用户信息 用户信息 欲删除的用户角色 public Boolean Change SYSUSER sysuser List deleteSYSUSERROLEList 修改前对欲修改的内容进行处理 覆盖此方法时应使用AsNoTracking 避 免EF缓存而导致修改实体不能Attach this BeforeChangeAction sysuser 如果增加两个子表数据 因为ID为空 Attach时存在错误 因此改为先取 出增加 修改列表 再进行增加 List addedSYSUSERROLEList new List List modifiedSYSUSERROLEList new List foreach SYSUSERROLE sysuserrole in sysuser SYSUSERROLE String idString sysuserrole ID ToString sysuserrole SYSUSER sysuser CODE if String IsNullOrEmpty idString idString 0 addedSYSUSERROLEList Add sysuserrole else modifiedSYSUSERROLEList Add sysuserrole 不删除的话 则在Attach主表时 提示已经增加相同键对象 if addedSYSUSERROLEList Count 0 foreach SYSUSERROLE sysuserrole in addedSYSUSERROLEList sysuser SYSUSERROLE Remove sysuserrole 覆盖实体对象 并将对象状态设置为已修改 从而产生Update语句 container SYSUSER Attach sysuser container Entry sysuser State System Data EntityState Modified if addedSYSUSERROLEList Count 0 foreach SYSUSERROLE sysuserrole in addedSYSUSERROLEList sysuser SYSUSERROLE Add sysuserrole if modifiedSYSUSERROLEList Count 0 foreach SYSUSERROLE sysuserrole in modifiedSYSUSERROLEList container Entry sysuserrole State System Data EntityState Modified 处理子表中要删除的所有数据 if Object Equals deleteSYSUSERROLEList null foreach SYSUSERROLE sysuserrole in deleteSYSUSERROLEList 附加子表数据 并将子表数据设置为Delete状态 从而产生 Delete语句 container SYSUSERROLE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵金属首饰与宝玉石检测员岗位任职考核试卷含答案
- 美甲师技能竞赛水平考核试卷含答案
- 琴身箱体制作工保密意识能力考核试卷含答案
- 有色金属矿干燥工安全文化测试考核试卷含答案
- 服装定型工岗位质量监控考核试卷含答案
- 思维分析试题及答案
- 母婴用品内容营销项目分析方案
- 2025年中国交通事故
- 2026年打架思想报告范文(3篇)
- 扶梯脚手架施工方案
- 【新教材】人教版PEP版(2024)三年级上册英语全册教案
- 屋面防水翻新工程竣工验收报告
- 2026年苏教版新教材一年级上册数学教学设计(全册)
- 神经内分泌肿瘤177Lu-Dotatate治疗
- 2026年北京市东城区五年级英语下册期末考试试卷及答案
- 高三二轮高效复习专题练物理专题50导体棒在导轨上运动问题(二)
- 一年级英语上册教学目标要求
- 2026年华为光技术笔练习题库含答案详解【基础题】
- 小学信息科技人教版(新教材)三年级全一册(教学设计全册)
- 2026年新疆国企招聘笔试备考题库(带答案详解)
- 央企项目亏损审计问责制度
评论
0/150
提交评论