综合应用WPF/WCF/WF/LINQ之二十九:代码生成器之DBMLToCode

简介:
SqlMetal.exe这个程序自动生成的DataContext类有很多问题,导致我们不能直接使用,所以我们有必要先生成DBML文件,并做一些修改,然后再生成DataContext类。
  我们需要修改的有如下几种情况:
  1、我们有自定义的Info类,但存储过程又会生成新的Info类,我们需要一一更改为自己的Info类,并删除自动生成的Info类。
  2、我们有自定义的枚举,我们需要在涉及到这些枚举类型的地方一一修改为自定义的枚举类型。
  3、当存储过程中使用了sp_executesql语句时,SqlMetal.exe程序会认为返回的不是一个结果集,而是一个Int,这时我们需要修改它的返回类型。
  本系统的考虑的情况比较简单,该代码生成器假定关于这个Table的所有返回类型都是一样的,形如TableNameInfo。
  这样一来,我们需要配置的,就只有枚举了。其它的几种情况我们可以用程序处理:判断Interface的返回类型,如果是Info或者IList,就将DBML中该存储过程的返回类型改成自定义的Info类名。
  枚举的配置如下:
    1  <? xml   version =" 1.0"   encoding =" utf-8"  ?>
    2  < root >
    3      < tables >
    4          < item   name =" Employee"   field =" EmployeeStatus"   value =" EmployeeStatusEnum"  />
    5      </ tables >
    6      < procedures >
    7          < item   name =" InsertEmployee"   field =" EmployeeStatus"   value =" EmployeeStatusEnum"  />
    8          < item   name =" UpdateEmployeeByEmployeeId"   field =" EmployeeStatus"   value =" EmployeeStatusEnum"  />
    9          < item   name =" GetEmployeesByFilter"   field =" EmployeeStatus"   value =" EmployeeStatusEnum"  />
   10      </ procedures >
   11  </ root >
  具体代码则相对比较简单,请参考源代码。
  值得注意的是,生成过程中,会在程序中调用SqlMetal.exe程序,将DBML文件转为DataContext类,删除无用的自动生成的Info类,必须要等该DataContext类生成之后才能进行。




本文转自 Eallies 51CTO博客,原文链接:http://blog.51cto.com/eallies/79010,如需转载请自行联系原作者
目录
相关文章
|
开发者 开发工具 定位技术
|
1月前
|
C# 开发者 Windows
基于Material Design风格开源、易用、强大的WPF UI控件库
基于Material Design风格开源、易用、强大的WPF UI控件库
|
5月前
|
C#
浅谈WPF之装饰器实现控件锚点
使用过visio的都知道,在绘制流程图时,当选择或鼠标移动到控件时,都会在控件的四周出现锚点,以便于修改大小,移动位置,或连接线等,那此功能是如何实现的呢?在WPF开发中,想要在控件四周实现锚点,可以通过装饰器来实现,今天通过一个简单的小例子,简述如何在WPF开发中,应用装饰器,仅供学习分享使用,如有不足之处,还请指正。
66 1
|
9月前
|
C# Windows
WPF技术之图形系列Polygon控件
WPF Polygon是Windows Presentation Foundation (WPF)框架中的一个标记元素,用于绘制多边形形状。它可以通过设置多个点的坐标来定义多边形的形状,可以绘制任意复杂度的多边形。
480 0
|
9月前
|
C# Windows
WPF技术之RichTextBox控件
WPF RichTextBox是Windows Presentation Foundation (WPF)中提供的一个强大的文本编辑控件,它可以显示富文本格式的文本,支持多种文本处理操作。
355 0
|
5月前
|
前端开发 C# 容器
浅谈WPF之控件拖拽与拖动
使用过office的visio软件画图的小伙伴都知道,画图软件分为两部分,左侧图形库,存放各种图标,右侧是一个画布,将左侧图形库的图标控件拖拽到右侧画布,就会生成一个新的控件,并且可以自由拖动。那如何在WPF程序中,实现类似的功能呢?今天就以一个简单的小例子,简述如何在WPF中实现控件的拖拽和拖动,仅供学习分享使用,如有不足之处,还请指正。
116 2
|
9月前
|
数据挖掘 数据处理 C#
WPF技术之DataGrid控件
WPF DataGrid是一种可以显示和编辑数据的界面控件。它可以作为表格形式展示数据,支持添加、删除、修改、排序和分组操作。
189 0
|
1月前
|
C# 开发者 C++
一套开源、强大且美观的WPF UI控件库
一套开源、强大且美观的WPF UI控件库
142 0