综合应用WPF/WCF/WF/LINQ之十四:LINQ的ORM功能的代码简化能力

1、关于存储过程的参数的传递。
  在LINQ之前,我们需要一一创建存储过程的参数,并传入存储过程。
    1              IDbDataParameter para;
    2 
    3             para =  this.CreateParameter();
    4             para.Value =  GenericConverter.StringToDbNVarchar( this.Parameters.EmployeeNo);
    5             para.ParameterName =  "@EmployeeNo";
    6             para.Direction =  ParameterDirection.Input;
    7             para.DbType =  DbType.String;
    8             parameters.Add(para);
  这里仅仅列出了一个参数的代码,在参数很多的情况下,这个代码将会很多很长。
  然而有了LINQ之后,十几个参数的存储过程的调用也非常简单:
    1                  this._Database.InsertEmployee(employeeInfo.EmployeeId,
    2                                               employeeInfo.EmployeeNo,
    3                                               employeeInfo.EmployeeName,
    4                                               employeeInfo.DepartmentId,
    5                                               employeeInfo.PositionId,
    6                                               employeeInfo.EmployeeManager,
    7                                               employeeInfo.EmployeeGender,
    8                                               employeeInfo.EmployeeEntryDate,
    9                                               employeeInfo.EmoplyeeBirthday,
   10                                               employeeInfo.EmployeePhone,
   11                                               employeeInfo.EmployeeEmail,
   12                                               employeeInfo.EmployeeStatus);
  2、关于存储过程返回结果的读取。
  在LINQ之前,我们需要一一读取每个列的值,并给Entity Class赋值。
    1              EmployeeInfo entity =  new  EmployeeInfo();
    2 
    3             entity.EmployeeId =  GenericConverter.DbIntToInt32(dataReader[0]);
    4             entity.EmployeeNo =  GenericConverter.DbNVarcharToString(dataReader[1]);
    5             entity.EmployeeName =  GenericConverter.DbNVarcharToString(dataReader[2]);
    6             entity.DepartmentId =  GenericConverter.DbIntToInt32(dataReader[3]);
    7             entity.PositionId =  GenericConverter.DbIntToInt32(dataReader[4]);
    8             entity.EmployeeManager =  GenericConverter.DbIntToInt32(dataReader[5]);
    9             entity.EmployeeGender =  GenericConverter.DbBitToBoolean(dataReader[6]);
   10             entity.EmployeeEntryDate =  GenericConverter.DbDateTimeToDateTime(dataReader[7]);
   11             entity.EmoplyeeBirthday =  GenericConverter.DbDateTimeToDateTime(dataReader[8]);
   12             entity.EmployeePhone =  GenericConverter.DbNVarcharToString(dataReader[9]);
   13             entity.EmployeeEmail =  GenericConverter.DbNVarcharToString(dataReader[10]);
   14             entity.EmployeeStatus =  GenericConverter.DbIntToEnum(dataReader[11]);
   15 
   16              this.QueryResults.Add(entity);
  上面代码还仅仅只是列出了生成Entity Class的代码。另外,如果一旦需求有变更,需要增加字段,则又需要一一修改DataReader的序号。
  然而有了LINQ之后,整个代码将会非常简单,即使增加了字段,也不会作任何改动:
    1                  IList value =  null;
    2 
    3                  ISingleResult< EmployeeInfo> results =  this._Database.GetEmployeesByEmployeeName(employeeName);
    4 
    5                  foreach ( EmployeeInfo item  in results)
    6                 {
    7                      if (value ==  null) value =  new  ArrayList();
    8 
    9                     value.Add(item);
   10                 }
   11 
   12                  return value;




本文转自 Eallies 51CTO博客,原文链接:http://blog.51cto.com/eallies/79029,如需转载请自行联系原作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值