前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(PDF.NET框架实例讲解)将任意复杂的SQL查询映射成实体类

(PDF.NET框架实例讲解)将任意复杂的SQL查询映射成实体类

作者头像
用户1177503
发布2018-02-26 17:50:12
2.5K0
发布2018-02-26 17:50:12
举报
文章被收录于专栏:程序员的SOD蜜

通常情况下我们的ORM框架都是将单表或者视图映射成一个实体类,有时候也会将存储过程映射成实体类,如果处于系统移植性的考虑,你不想写存储过程,那这些复杂的SQL查询怎么映射成实体类?

实际上,不管是单表,视图,存储过程,SQLSERVER的表值函数,自定义的SQL查询,甚至是任意复杂的SQL查询,都可以用一个SQL语句来表示,只要我们的ORM框架能够实现将SQL语句的查询结果映射成实体类,那么使用ORM就很简单了。我们使用PDF.NET(PWMIS数据开发框架)来实例讲解一下这个过程。

1,首先下载并安装一个“PDF.NET集成开发环境”,详细内容请参见《PDF.NET数据开发框架之集成开发工具Ver 4.1发布》,下面是该工具运行的界面:

2,在“数据连接”选项卡上,选择或创建一个连接分组,然后再添加一个连接(注意鼠标右键菜单),之后就能够打开该连接,看到该连接下面的数据库、表、视图、存储过程等内容,如上图所示。工具支持各种类型的数据库。

3,新建一个查询,在上图右边的内容区输入你的SQL语句,按“F5”键,如果正确将会看到结果网格。

    到此为止,你可以使用本工具作为一个支持多种数据库的“查询分析器”来使用了,你还可以扩展它的数据提供程序,以支持你自己的数据源。

4,在“查询窗口”,鼠标右键的弹出菜单上,选择“生成实体类”

 然后,弹出一个新窗口,进行生成实体类的有关设置:

注意勾选“SQL查询的有效性”,并输入要映射的实体类名称等信息,然后点击“确定”。

在“属性浏览器”里面,进行一些生成的设置,主要有文件路径和代码语言的选择,设置好以后,可以单击网格上面的“预览”连接,弹出如下界面:

这个时候可以看到我们生成的实体类的原貌,如果觉得不好,可以修改重新进行。

关闭窗口后,如果还想添加更多的自定义查询,请单击“高级”按钮,将重复上面的步骤,添加一个新的查询,结果如下图:

单击“生成”按钮,将生成两个选中的实体类文件。

注意:这里除了生成的实体类文件之外,还会生成一个固定名称的实体类配置文件 EntitySqlMap.config文件,下面将会讲到它的用处。

5,经过上面的步骤,我们的实体类文件生成好了,下面做一些准备工作,看看如何在项目里面使用。

    先打开自定义查询的实体类配置文件 EntitySqlMap.config文件,我们做一下修改:

修改该文件的内容,将原来有实际基金代码的地方,都替换成 @jjdm 的SQL查询参数名称,如上图。

接下来,将这3个文件添加到我们的Model项目中:

接下来,将EntitySqlMap.config文件作为嵌入式资源文件编译,注意如果你做的是WinForm 程序,可以跳过这一步,但程序运行时需要包含该文件,所以还是建议作为嵌入式文件编译,这样有更好的安全性。另外该文件应该和实体类文件放到同一个目录下面。

最后,我们看看如何在项目里面使用这样的实体类:

自定义查询的实体类跟普通的PDF.NET实体类使用方式类似,都需要OQL表达式来操作,例如选取要使用的字段,设置Where条件,这里为了简便,仅仅调用了OQL.Select()方法,选取查询出来的全部列。

注意:自定义查询的实体类如果你的SQL查询语句需要使用参数,例如本地的 @jjdm,则还应该设置OQL的InitParameters属性,如上图所示。

最后,将可以直接查询了,用过PDF.NET框架的朋友都知道,就一行代码,如本例所示:

  List<JJDangAnInfo> list = EntityQuery<JJDangAnInfo>.QueryList(q);

6,经过以上步骤,我们的代码已经可以运行了。当前的实例用到了一个ASP.NET+MVC 2.0的项目中,下面是运行的效果图:

PDF.NET自定义查询实体类的实例运用,还可以参考

SQLSERVER 占了500多M内存,原来的程序无法一次查询出50多W数据了,记录下这个问题的解决过程。

除了可以通过本文说的方式将SQL语句映射到实体类,还可以通过PDF.NET内置的SQL-MAP技术来实现实体类映射,就像iBaits那样,但比iBaits简单很多,详细内容,请参看:

PDF.NET数据开发框架 之SQL-MAP使用存储过程

注:本文所说的自定义查询在PDF.NET3.5以后方可以支持,实例代码需要在PDF.NET 4.1以上支持,PDF.NET本身仅需要.net 2.0支持,框架的最新版本没有公开发布,有关框架的详细信息请看官网介绍: http://www.pwmis.com/sqlmap

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档