那些 Cynthia 教我的事 之 PMSec (二)

一、在Foreach之前要判断是否为空。

常常从数据库里取出来表就直接用了,很少记得判断是否有值。不严谨的说。

专业人员写的是酱滴。。。

1           DataLayer.PMSecDataSet.PMSECRequestDataTable requestDataTable = adapter.up_PMSec_PMSECRequestSelectByMasterIDs(masterIds);
2
3           if (requestDataTable != null && requestDataTable.Count > 0)
4           {
5              ...
6            }

二、当数据库中允许为空。

话说,上次已经说过的啦。。。但是这次更加明确,要用Nullable<int>.

 1          Nullable<int> intNull = null;
 2           DataLayer.PMSecDataSet.PMSECRequestDataTable requestDataTable = adapter.up_PMSec_PMSECRequestSelectByMasterIDs(masterIds);
 3
 4           if (requestDataTable != null && requestDataTable.Count > 0)
 5           {
 6
 7               foreach (DataLayer.PMSecDataSet.PMSECRequestRow dr in requestDataTable.Rows)
 8               {
 9                   PMSecRequestInfo requestInfo = new PMSecRequestInfo();
10                   requestInfo.RequestMasterID = dr.RequestMasterID;
11                   requestInfo.EmployeeID = dr.EmployeeID;
12                   Employee requestEmployee = new Employee(dr.EmployeeID);
13                   requestInfo.DisplayName = requestEmployee.DisplayName;
14                   requestInfo.StatusType = dr.StatusType;
15                   requestInfo.CompanyID = dr.CompanyID;
16                   requestInfo.WorkStoreID = dr.WorkStoreID;
17                   requestInfo.JobCode = dr.JobCode;
18                   requestInfo.RequestedSecurityLevel = dr.IsRequestedSecurityLevelNull() ? intNull : dr.RequestedSecurityLevel;
19                   requestInfo.IsSecurityAdmin = dr.IsSecurityAdmin;
20                   requestInfo.CreatedBy = dr.CreatedBy;
21                   requestInfo.CreatedOn = dr.CreatedOn;
22
23                   requestInfoList.Add(requestInfo);
24               }
25           }

string类无需此处理。

三、操作数据库时

当含有update等更改数据库内容的语句存在时,如果下面操作仍与数据库有关,考虑到程序的扩展性,可能出现上述语句删除了某些数据,下面语句出现异常,或者产生错误结果,等等。

譬如下面两段代码,前者是我的做法,后者为Cynthia的做法,一见高下啊啊啊。我写的好像是舒克和贝塔里那只笨猫,喵,~~~~(>_<)~~~~ 。

 1   public void ApporveOrDeclineRequest(string masterIds, string statusType, int loginEid)
 2       {
 3            PMSECRequestPendingTaskTableAdapter adapter = new PMSECRequestPendingTaskTableAdapter();
 4            adapter.up_PMSec_PMSECRequestUpdate(masterIds, statusType, loginEid);
 5
 6           // Send Email
 7            PandaRG.Common.OrgChart.Employee logInEmployee = new Common.OrgChart.Employee(loginEid);
 8
 9            if (statusType == RequestStatusType.APPROVED.ToString())
10            {
11                EmailSendHelper.SentEmailbyEmailType(RequestStatusType.APPROVED, GetRequestInfoListByRequestMasterIds(masterIds), logInEmployee);
12
13            }
14            else if(statusType==RequestStatusType.DECLINED.ToString())
15            {
16                EmailSendHelper.SentEmailbyEmailType(RequestStatusType.DECLINED, GetRequestInfoListByRequestMasterIds(masterIds), logInEmployee);
17            }
18       }
1       public void UpdatePMSECRequest(string masterIds, RequestStatusType statusType, Employee loginEmployee)
2       {
3           PMSECRequestPendingTaskTableAdapter adapter = new PMSECRequestPendingTaskTableAdapter();
4
5           List<PMSecRequestInfo> requestInfoList = GetRequestInfoListByRequestMasterIds(masterIds);
6           adapter.up_PMSec_PMSECRequestUpdate(masterIds, statusType.ToString(), loginEmployee.EmployeeId);
7           EmailSendHelper.SentEmailbyEmailType(statusType, requestInfoList, loginEmployee);
8       }

四、 λ 表达式

好复杂的说,不老明白的,计入λ 番外篇吧。

( ^_^ )/~~

时间: 2024-11-12 00:28:54

那些 Cynthia 教我的事 之 PMSec (二)的相关文章

那些 Cynthia 教我的事 之 PMSec (三)

在项目中,聪明的Jenny童鞋提了一个suggestion,即将同一个店同一人提交的请求,经过上级批准之后,邮件内容需要合并. 非常滴合理有木有~~ 提交十个申请,将收到十封邮件,的确不友好哦.可是由于中间任何一级supervisor都可以为子店提交request,高level的都可以批准.) 于是,烧脑开始了... (话说别人都不用烧,可怜我二八六的大脑啊...) 审批者提交的List如下: 即: A 提了2个request 关于store 1  --合并为一封邮件 1个request 关于s

那些 Cynthia 教我的事 之 PMSec (一)

一.ViewState的使用 在项目中,我一直在用Common的方法读取一些信息,但是Cynthia习惯将它存入ViewState中. ViewState 它是由ASP.NET页面框架管理的一个隐藏的窗体字段.当ASP.NET执行某个页面时,该页面上的ViewState值和所有控件将被收集并格式化成一个编码字符串,然后被分配给隐藏窗体字段的值属性(即<inputtype=hidden>).由于隐藏窗体字段是发送到客户端的页面的一部分,所以ViewState值被临时存储在客户端的浏览器中.如果客

Docker最全教程之Python爬网实战(二十一)

原文:Docker最全教程之Python爬网实战(二十一) Python目前是流行度增长最快的主流编程语言,也是第二大最受开发者喜爱的语言(参考Stack Overflow 2019开发者调查报告发布).笔者建议.NET.Java开发人员可以将Python发展为第二语言,一方面Python在某些领域确实非常犀利(爬虫.算法.人工智能等等),另一方面,相信我,Python上手完全没有门槛,你甚至无需购买任何书籍! 由于近期在筹备4.21的长沙开发者大会,耽误了不少时间.不过这次邀请到了腾讯资深技术

教你遇事最有水平的处理方法

1 .学会沉默(如果他只是想拿你撒气) 有时候,你被人误解,你不想争辩,所以选择沈默.本来就不是所有的人都得了解你,因此你认为不必对全世界喊话.却也有时候,你被最爱的人误解,你难过到不想争辩,也只有选择沈默. 全世界都可以不懂你,但他应该懂,若他竟然不能懂,还有什么话可说?生命中往往有连舒伯特都无言以对的时刻,毕竟不是所有的是非都能条列清楚,甚至可能根本没有真正的是与非.那么,不想说话,就不说吧,在多说无益的时候,也许沈默就是最好的解释. 2.学会平静(坦然面对) 在你跌入人生谷底的时候,你身旁

Android开发之手把手教你写ButterKnife框架(二)

欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52664112 本文出自:[余志强的博客] 上一篇博客Android开发之手把手教你写ButterKnife框架(一)我们讲了ButterKnife是什么.ButterKnife的作用和功能介绍以及ButterKnife的实现原理. 本篇博客主要讲在android studio中如何使用apt. 一.新建个项目, 然后创建一个module名叫processor 新建m

教你写Http框架(二)——三个样例带你深入理解AsyncTask

这个标题大家不要奇怪,扯Http框架怎么扯到AsyncTask去了,有两个原因:首先是Http框架除了核心http理论外.其技术实现核心也是线程池 + 模板 + handler,而AsyncTask又正好也是这三者的完美结合.其次,也是自己在面试中发现大量的安卓开发人员全然不了解AsyncTask的原理和技术细节.而AsyncTask的思想在我们设计app框架和性能调优的时候是非常实用的.所以这里特地写一篇关于AsyncTask的博文. 老规矩,我的习惯还是通过写demo,把核心技术一点点剥离出

小KING教你做android项目(二)---实现登陆页面并跳转和简单的注册页面

原文:http://blog.csdn.net/jkingcl/article/details/10989773 今天我们主要来介绍登陆页面的实现,主要讲解的就是涉及到的布局,以及简单的跳转需要用到的代码. 首先我们来看看布局的xml代码 login.xml [html] view plaincopy <span style="font-family:Arial;font-size:18px;"><?xml version="1.0" encodi

我一生中认识的那些人,那些事。(二)

高中时代,有谁呢?陈思,我特别想问她为什么不叫陈默?她很认真的回答了我,滚!还有霸气一姐,堪比霸道总裁.其实,她并不是这样的,好多人都误会她了,她很好的.只是很多人不了解她,也不去了解她,她也懒得展现她温柔的一面.还有,霜子.好吧,其实这是我一个室友的故事,我只是强行把我认识的人的名字外号加进去了.不闹了,我继续编故事吧,故事大致意思是真实的,只是为了可读性,我需要艺术性的加工下.先介绍我的家.我家在省城,家中略有资产,并不富有.我花钱大手大脚,其实也并没有,我只是想着,既然买了,就买好的一点.

手把手教你做蓝牙小车(二)

第5节 BTChat 本节开始介绍Arduino蓝牙模块,配合Android应用,实现一个蓝牙聊天应用. 5.1 什么是蓝牙 简单说就是一种不同设备之间点对点通讯的技术. 有大篇大篇的蓝牙各种协议,各种规范... 本课程只讲用到的内容,不展开更多内容了. 5.2 SDP Service Discovery Protocol,简称SDP,是允许设备发现其他设备所支持服务的协议. 蓝牙协议给每个服务分配一个UUID,用来区分各种服务. SDP的UUID是00001101-0000-1000-8000