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

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

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

           DataLayer.PMSecDataSet.PMSECRequestDataTable requestDataTable = adapter.up_PMSec_PMSECRequestSelectByMasterIDs(masterIds);

           if (requestDataTable != null && requestDataTable.Count > )
{
...
}

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

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

          Nullable<int> intNull = null;
DataLayer.PMSecDataSet.PMSECRequestDataTable requestDataTable = adapter.up_PMSec_PMSECRequestSelectByMasterIDs(masterIds); if (requestDataTable != null && requestDataTable.Count > )
{ foreach (DataLayer.PMSecDataSet.PMSECRequestRow dr in requestDataTable.Rows)
{
PMSecRequestInfo requestInfo = new PMSecRequestInfo();
requestInfo.RequestMasterID = dr.RequestMasterID;
requestInfo.EmployeeID = dr.EmployeeID;
Employee requestEmployee = new Employee(dr.EmployeeID);
requestInfo.DisplayName = requestEmployee.DisplayName;
requestInfo.StatusType = dr.StatusType;
requestInfo.CompanyID = dr.CompanyID;
requestInfo.WorkStoreID = dr.WorkStoreID;
requestInfo.JobCode = dr.JobCode;
requestInfo.RequestedSecurityLevel = dr.IsRequestedSecurityLevelNull() ? intNull : dr.RequestedSecurityLevel;
requestInfo.IsSecurityAdmin = dr.IsSecurityAdmin;
requestInfo.CreatedBy = dr.CreatedBy;
requestInfo.CreatedOn = dr.CreatedOn; requestInfoList.Add(requestInfo);
}
}

string类无需此处理。

三、操作数据库时

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

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

   public void ApporveOrDeclineRequest(string masterIds, string statusType, int loginEid)
{
PMSECRequestPendingTaskTableAdapter adapter = new PMSECRequestPendingTaskTableAdapter();
adapter.up_PMSec_PMSECRequestUpdate(masterIds, statusType, loginEid); // Send Email
PandaRG.Common.OrgChart.Employee logInEmployee = new Common.OrgChart.Employee(loginEid); if (statusType == RequestStatusType.APPROVED.ToString())
{
EmailSendHelper.SentEmailbyEmailType(RequestStatusType.APPROVED, GetRequestInfoListByRequestMasterIds(masterIds), logInEmployee); }
else if(statusType==RequestStatusType.DECLINED.ToString())
{
EmailSendHelper.SentEmailbyEmailType(RequestStatusType.DECLINED, GetRequestInfoListByRequestMasterIds(masterIds), logInEmployee);
}
}
       public void UpdatePMSECRequest(string masterIds, RequestStatusType statusType, Employee loginEmployee)
{
PMSECRequestPendingTaskTableAdapter adapter = new PMSECRequestPendingTaskTableAdapter(); List<PMSecRequestInfo> requestInfoList = GetRequestInfoListByRequestMasterIds(masterIds);
adapter.up_PMSec_PMSECRequestUpdate(masterIds, statusType.ToString(), loginEmployee.EmployeeId);
EmailSendHelper.SentEmailbyEmailType(statusType, requestInfoList, loginEmployee);
}

四、 λ 表达式

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

( ^_^ )/~~

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

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

    在项目中,聪明的Jenny童鞋提了一个suggestion,即将同一个店同一人提交的请求,经过上级批准之后,邮件内容需要合并. 非常滴合理有木有~~ 提交十个申请,将收到十封邮件,的确不友好哦.可是由 ...

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

    一.ViewState的使用 在项目中,我一直在用Common的方法读取一些信息,但是Cynthia习惯将它存入ViewState中. ViewState 它是由ASP.NET页面框架管理的一个隐藏的 ...

  3. Docker最全教程之MySQL容器化 (二十四)

    前言 MySQL是目前最流行的开源的关系型数据库,MySQL的容器化之前有朋友投稿并且写过此块,本篇仅从笔者角度进行总结和编写. 目录 镜像说明  运行MySQL容器镜像  1.运行MySQL容器  ...

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

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52664112 本文出自:[余志强的博客] 上一篇博客Android开 ...

  5. 3D单机游戏《天鹰教》源码发布(二)

    3D单机游戏<天鹰教>源码发布 作者 作者: 游蓝海 博客: http://blog.csdn.net/you_lan_hai mail:     you_lan_hai@foxmail. ...

  6. 手把手教你用Pytorch-Transformers——实战(二)

    本文是<手把手教你用Pytorch-Transformers>的第二篇,主要讲实战 手把手教你用Pytorch-Transformers——部分源码解读及相关说明(一) 使用 PyTorc ...

  7. 手把手教你全家桶之React(二)

    前言 上一篇已经讲了一些react的基本配置,本遍接着讲热更新以及react+redux的配置与使用. 热更新 我们在实际开发时,都有用到热更新,在修改代码后,不用每次都重启服务,而是自动更新.并而不 ...

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

    Python目前是流行度增长最快的主流编程语言,也是第二大最受开发者喜爱的语言(参考Stack Overflow 2019开发者调查报告发布).笔者建议.NET.Java开发人员可以将Python发展 ...

  9. Opencv2教程一:图像变换之阈值二值threshold

    网名:无名   QQ:16349023 email:mengwzy@qq.com 曾经非常少写教程,写的可能有点乱希望大对家有帮助 threshold 方法是通过遍历灰度图中点.将图像信息二值化,处理 ...

随机推荐

  1. 大到可以小说的Y组合子(二)

    问:上一回,你在最后曾提到"抽象性不足",这话怎么说? 答:试想,如果现在需要实现一个其它的递归(比如:Fibonacci),就必须把之前的模式从头套一遍,然后通过fib_make ...

  2. Android 4.4前后版本读取图库图片和拍照完美解决方案

    转载:http://blog.csdn.net/zbjdsbj/article/details/42387551 4.3或以下,选了图片之后,根据Uri来做处理,很多帖子都有了,我就不详细说了. 主要 ...

  3. Entity Framework中实现查询的几种方法

    在介绍几种方法前,献上一张图,希望图的作者不要追究我的盗图之过.本文的内容是我自学时的笔记,自学的内容来自网络.手打的代码,切不可直接复制过去用,会有好多错别字什么的. Entity SQL 类似于S ...

  4. Funsion Charts 学习(二)

    下载FusionCharts 3.1网址为 http://www.onlinedown.net/soft/92224.htm 第一个demo 新建一个文件夹,命名为demo 在文件夹中新建一个两个文件 ...

  5. C#操作Excel总结

    0. 导入命名空间:  1 2 3 4 using Microsoft.Office.Core; using Microsoft.Office.Interop.Excel; using System. ...

  6. jquery获取当前鼠标所在位置的坐标

    $(document).ready(function(){ $(document).mousemove(function(e){ $('#xy').html("X :"+e.pag ...

  7. Scrapinghub执行spider抓取并显示图片

    序 最近在学习Scrapy的时候发现一个很有意思的网站,可以托管Spider,也可以设置定时抓取的任务,相当方便.于是研究了一下,把其中比较有意思的功能分享一下: 抓取图片并显示在item里: 下面来 ...

  8. 解决mac ssh连linux中文乱码的问题[转]

    将Mac下/etc/ssh_config中的SendEnv LANG LC_*这一行用#号注释掉 reference: http://www.zhihu.com/question/20117388

  9. PHP PSR-4 Autoloader 自动加载(中文版)

    Autoloader 关键词 “必须”("MUST").“一定不可/一定不能”("MUST NOT").“需要”("REQUIRED"). ...

  10. python成长之路第三篇(4)_作用域,递归,模块,内置模块(os,ConfigParser,hashlib),with文件操作

    打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.作用域 2.递归 3.模块介绍 4.内置模块-OS 5.内置模块-ConfigParser 6.内置模块-has ...