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;