[发明专利]一种数据表与实体类的动态映射及转换方法在审
申请号: | 201510129831.3 | 申请日: | 2015-03-24 |
公开(公告)号: | CN104731911A | 公开(公告)日: | 2015-06-24 |
发明(设计)人: | 田尚杰 | 申请(专利权)人: | 浪潮集团有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 姜明 |
地址: | 250101 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据表 实体 动态 映射 转换 方法 | ||
技术领域
本发明涉及数据处理技术领域,具体地说是一种实用性强、数据表与实体类的动态映射及转换方法。
背景技术
对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。一般需要事先构建源对象类型和目标对象类型,目标对象类型必须是强类型的或者硬编码,并且源对象类型和目标对象类型都要有一个比较复杂的Schema描述。
LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静态类型等强类型语言的好处。
在实际开发过程中,我们的“业务逻辑”常常需要我们对同样的数据进行各种变换。例如,一个Web应用通过前端收集用户的输入成为数据传输对象(DTO),然后将DTO转换成领域模型并持久化到数据库中。另一方面,当用户请求数据时,我们又需要做相反的工作:将从数据库中查询出来的领域模型以相反的方式转换成DTO再呈现给用户。
每转换为一种实体类型,都需要手工编写转换代码,费时费力。
基于此,现提供一种基于字符串描述的数据表与实体类的动态映射及转换方法,该方法利用LINQ的特性,实现DTO和数据库表之间对象关系映射与转换的方案。
发明内容
本发明的技术任务是针对以上不足之处,提供一种实用性强、数据表与实体类的动态映射及转换方法。
一种数据表与实体类的动态映射及转换方法,其具体实现过程为:
一、构建源数据对象DataTable和目标数据对象实体间的映射关系描述字符串;
二、从源数据对象DataTable进行数据抽取;
三、把从源数据对象抽取的数据转换为目标数据对象实体。
所述步骤一中使用字符串类型描述映射关系的基本语法如下:
Fr[源对象列1名称] to 目标对象属性1名称, Fr[源对象列2名称] to 目标对象属性2名称,……, Fr[源对象列n名称] to 目标对象属性n名称;
其中,Fr[源对象列1名称] to 目标对象属性1名称,表示把源对象的某一列映射到目标对象的一个属性;Fr和to是固定关键词;源对象列1名称、源对象列2名称、源对象列n名称,代表源对象的某一列的列名称;目标对象属性1名称、目标对象属性2名称、目标对象属性n名称是目标对象的一个属性名称。
所述映射关系的具体描述语法为:
(Fr[源对象列m名称] 运算符 Fr[源对象列n名称]) to 目标对象属性名称;
其中,运算符包括“+”、“-”、“*”、“/”四种,当运算符前后的对象列的值为整数和数值类型时,使用以上四种运算符中的任何一个;当运算符前后的对象列的值为字符类型时,使用“+”运算符。
执行源数据对象与目标数据对象间的映射及转换时,首先要把映射关系描述字符串转换为符合Linq要求的Lambda表达式,即系统把映射关系描述字符串中的每一个Fr[源对象列名称] to 目标对象属性名称转换成一个Lambda表达式片段:
根据传入的目标对象实体的类型,动态构建目标对象实体类;当传入的目标对象实体的类型为null时,则动态构建一个dynamic类型的实体类;
当遇到关键词Fr,系统根据其后的[源对象列n名称],把其对应到列名称为“源对象列n名称”的数据上,并作为当前Lambda表达式片段的left段;
当遇到关键词to,系统根据其后的“目标对象属性名称”,通过反射的方式获取目标对象实体中“目标对象属性名称”所代表的属性,并把该属性作为当前Lambda表达式片段的right段;
系统根据Lambda表达式片段的right段所代表的目标对象属性的类型,把Lambda表达式片段的left段所代表的源对象列的值进行类型转换后,赋值给Lambda表达式片段的right段所代表的目标对象属性。
本发明的一种数据表与实体类的动态映射及转换方法,具有以下优点:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮集团有限公司;,未经浪潮集团有限公司;许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510129831.3/2.html,转载请声明来源钻瓜专利网。