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;