综合应用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,如需转载请自行联系原作者

目录
相关文章
|
C# 前端开发
WPF中Style文件的引用——使用xaml代码或者C#代码动态加载
原文:WPF中Style文件的引用——使用xaml代码或者C#代码动态加载   WPF中控件拥有很多依赖属性(Dependency Property),我们可以通过编写自定义Style文件来控制控件的外观和行为,如同CSS代码一般。
4505 0
|
11月前
|
C#
4.使用代码和未经编译的XAML创建WPF应用程序
4.使用代码和未经编译的XAML创建WPF应用程序
58 0
|
11月前
|
C# C++ Windows
3.只使用代码创建WPF应用程序
3.只使用代码创建WPF应用程序
81 0
|
C#
C# WPF 中用代码模拟鼠标和键盘的操作
原文:C# WPF 中用代码模拟鼠标和键盘的操作   原文地址   C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的。
2141 0
|
C#
WPF中桌面屏保的制作(主要代码)
原文:WPF中桌面屏保的制作(主要代码) 制作要点:(1) 使用System.Windows.Threading.DispatcherTimer;(2) 将Window属性设置为:      this.WindowState = WindowState.Maximized;      this.WindowStyle = WindowStyle.None;      this.ResizeMode = ResizeMode.NoResize;(3) 按ESC键时,关闭窗口。
808 0
|
C#
WPF中,怎样将XAML代码加载为相应的对象?
原文:WPF中,怎样将XAML代码加载为相应的对象? 在前面“在WPF中,如何得到任何Object对象的XAML代码?”一文中,我介绍了使用System.Windows.Markup.XamlWriter.Save(objName)得到任何Object对象的XAML代码。
888 0
|
C#
代码创建 WPF 旋转动画
原文:代码创建 WPF 旋转动画 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a771948524/article/details/9304001 ...
783 0
|
前端开发 Windows
C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码
原文:C#WPF 如何绘制几何图形 图示教程 绘制sin曲线 正弦 绘制2D坐标系 有图有代码 C#WPF 如何绘制几何图形? 怎么绘制坐标系?绘制sin曲线(正弦曲线)? 这离不开Path(System.Windows.Shapes)和StreamGeometry(System.Windows.Media)类。
2109 0
|
C# 编解码
使用不安全代码将 Bitmap 位图转为 WPF 的 ImageSource 以获得高性能和持续小的内存占用
原文:使用不安全代码将 Bitmap 位图转为 WPF 的 ImageSource 以获得高性能和持续小的内存占用 版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
1140 0
|
C# 数据安全/隐私保护 Windows
WPF Event 在 Command 中的应用初级篇,支持所有Event 展示松耦合设计的全部代码 - 解决TextBoxBase.TextChanged或者TextBox.TextChanged等类似事件绑定问题。
原文:WPF Event 在 Command 中的应用初级篇,支持所有Event 展示松耦合设计的全部代码 - 解决TextBoxBase.TextChanged或者TextBox.TextChanged等类似事件绑定问题。
1285 0