欢迎来到天天文库
浏览记录
ID:32755652
大小:56.21 KB
页数:5页
时间:2019-02-15
《extjs服务层service代码剖析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、服务层Service代码剖析版本号重要说明人员时间V1.0初始版本熊伟2013.12.27以对实体对象PROJECT进行操作的服务类PROJECTService自动生成代码为例,说明服务层代码中完成的功能,以加深对系统的了解。所有的服务类都继承于Abstractservice抽象类,如下图:publicpartialclassPROJECTService:Abstractservice{创建服务类时,需要传入客户端环境信息,如当前用户、当前语言等标志。使用抽象类初始化服务类,保留客户端环境的实例变量。publicPROJECTService(ClientCulturecu
2、lture):base(culture){}获取所有实体对彖publicListGetList(){前置条件处理,可以用于根据用户权限返回部分数据,而不是全部数据。无需处理时,则不用实现此方法。Listlist=this.BeforeQueryAction();if(!Object.Equals(list,null))returnlist;调用EF,获取所有实体。list=container.PROJECT.ToList();后置结果处理,可以对实体对象列表进行相应处理。this.QueryAction3、>(list);returnlist;}根据查询条件获取满足条件的实体列表查询条件是Func委托,最简单的是p=>p.Code=="1"o复朵的可以使用动态Lamda代码生成,如以下形式:ParameterExpressionc=Expression.Parameter(typeof(T),”p");Expressionexp1=Expression.Equal(Expression.Property(c,"PROJECT"),Expression.Constant(project));Expressionexp2=Expression.Equal(Exp4、ression.Property(c,"TASK"),Expression.Constant(task));ExpressionvFuncGetList(FuncwhereLambda)前置条件处理,可以用于根据用户权限返冋部分数据,而不是全部数据。无需处理时,则不用实现此方法。Listlist5、=this.BeforeQueryByConditionAction(whereLambda);if(!Object.Equals(list,null))returnlist;调用EF,获取满足条件的实体列表。list=container.PROJECT.Where(whereLambda).ToList();后置结果处理,可以对实体对象列表进行相应处理。this.QueryByConditionAction(list);returnlist;}根据主键获取相应实体publicPROJECTGet(System.String_guid)6、{调用EF,根据主键获取实体。PROJECT_project=container.PROJECT.Find(_guid);后置结果处理,可以对所获取的实体对象进行相应处理。this.QueryOneAction(_project);return_project;}增加对象到数据库publicBooleanAdd(PROJECT_project){对象增加前置处理,可以判断内容合法性,如唯一码是否重复等,如中止则可以直接抛出错误即可。this.BeforeAddAction(jDroject);向EF中增加实体container.PROJ7、ECT.Add(_project);向数据库中增加实体Booleanresult=container.SaveChanges()>0;对象增加后置处理if(result)this.AfterAddedAction(_project);returnresult;}修改数据库中对象publicBooleanChange(PROJECT_project){对象增加前置处理,可以判断内容合法性等this.BeforeChangeAction(jDroject);覆盖EF中的实体对象,并将对象状态设置
3、>(list);returnlist;}根据查询条件获取满足条件的实体列表查询条件是Func委托,最简单的是p=>p.Code=="1"o复朵的可以使用动态Lamda代码生成,如以下形式:ParameterExpressionc=Expression.Parameter(typeof(T),”p");Expressionexp1=Expression.Equal(Expression.Property(c,"PROJECT"),Expression.Constant(project));Expressionexp2=Expression.Equal(Exp
4、ression.Property(c,"TASK"),Expression.Constant(task));ExpressionvFuncGetList(FuncwhereLambda)前置条件处理,可以用于根据用户权限返冋部分数据,而不是全部数据。无需处理时,则不用实现此方法。Listlist
5、=this.BeforeQueryByConditionAction(whereLambda);if(!Object.Equals(list,null))returnlist;调用EF,获取满足条件的实体列表。list=container.PROJECT.Where(whereLambda).ToList();后置结果处理,可以对实体对象列表进行相应处理。this.QueryByConditionAction(list);returnlist;}根据主键获取相应实体publicPROJECTGet(System.String_guid)
6、{调用EF,根据主键获取实体。PROJECT_project=container.PROJECT.Find(_guid);后置结果处理,可以对所获取的实体对象进行相应处理。this.QueryOneAction(_project);return_project;}增加对象到数据库publicBooleanAdd(PROJECT_project){对象增加前置处理,可以判断内容合法性,如唯一码是否重复等,如中止则可以直接抛出错误即可。this.BeforeAddAction(jDroject);向EF中增加实体container.PROJ
7、ECT.Add(_project);向数据库中增加实体Booleanresult=container.SaveChanges()>0;对象增加后置处理if(result)this.AfterAddedAction(_project);returnresult;}修改数据库中对象publicBooleanChange(PROJECT_project){对象增加前置处理,可以判断内容合法性等this.BeforeChangeAction(jDroject);覆盖EF中的实体对象,并将对象状态设置
此文档下载收益归作者所有