一种数据表与实体类的动态映射及转换方法技术

技术编号:11643377 阅读:139 留言:0更新日期:2015-06-24 21:18
本发明专利技术公开了一种数据表与实体类的动态映射及转换方法,其具体实现过程为:构建源数据对象DataTable和目标数据对象实体间的映射关系描述字符串;从源数据对象DataTable进行数据抽取;把从源数据对象抽取的数据转换为目标数据对象实体。该一种数据表与实体类的动态映射及转换方法与现有技术相比,实现数据库中各种数据的快速抓取,实现各种数据的模式化展现,实用性强,易于推广。

【技术实现步骤摘要】

本专利技术涉及数据处理
,具体地说是一种实用性强、数据表与实体类的动态映射及转换方法
技术介绍
对象关系映射(Object Relat1nal Mapping,简称0RM,或0/RM,或0/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。一般需要事先构建源对象类型和目标对象类型,目标对象类型必须是强类型的或者硬编码,并且源对象类型和目标对象类型都要有一个比较复杂的Schema描述。LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性。已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感知、静态类型等强类型语言的好处。在实际开发过程中,我们的“业务逻辑”常常需要我们对同样的数据进行各种变换。例如,一个Web应用通过前端收集用户的输入成为数据传输对象(DTO),然后将DTO转换成领域模型并持久化到数据库中。另一方面,当用户请求数据时,我们又需要做相反的工作:将从数据库中查询出来的领域模型以相反的方式转换成DTO再呈现给用户。每转换为一种实体类型,都需要手工编写转换代码,费时费力。基于此,现提供一种基于字符串描述的数据表与实体类的动态映射及转换方法,该方法利用LINQ的特性,实现DTO和数据库表之间对象关系映射与转换的方案。
技术实现思路
本专利技术的技术任务是针对以上不足之处,提供一种实用性强、数据表与实体类的动态映射及转换方法。,其具体实现过程为: 一、构建源数据对象DataTable和目标数据对象实体间的映射关系描述字符串; 二、从源数据对象DataTable进行数据抽取; 三、把从源数据对象抽取的数据转换为目标数据对象实体。所述步骤一中使用字符串类型描述映射关系的基本语法如下:Frto目标对象属性I名称,Frto目标对象属性2名称,......,Frto目标对象属性η名称; 其中,Frto目标对象属性I名称,表示把源对象的某一列映射到目标对象的一个属性;Fr和to是固定关键词;源对象列I名称、源对象列2名称、源对象列η名称,代表源对象的某一列的列名称;目标对象属性I名称、目标对象属性2名称、目标对象属性η名称是目标对象的一个属性名称。所述映射关系的具体描述语法为:(Fr 运算符Fr )to目标对象属性名称; 其中,运算符包括四种,当运算符前后的对象列的值为整数和数值类型时,使用以上四种运算符中的任何一个;当运算符前后的对象列的值为字符类型时,使用“+”运算符。执行源数据对象与目标数据对象间的映射及转换时,首先要把映射关系描述字符串转换为符合Linq要求的Lambda表达式,即系统把映射关系描述字符串中的每一个Fr to目标对象属性名称转换成一个Lambda表达式片段: 根据传入的目标对象实体的类型,动态构建目标对象实体类;当传入的目标对象实体的类型为null时,则动态构建一个dynamic类型的实体类; 当遇到关键词Fr,系统根据其后的,把其对应到列名称为“源对象列η名称”的数据上,并作为当前Lambda表达式片段的left段; 当遇到关键词to,系统根据其后的“目标对象属性名称”,通过反射的方式获取目标对象实体中“目标对象属性名称”所代表的属性,并把该属性作为当前Lambda表达式片段的right 段; 系统根据Lambda表达式片段的right段所代表的目标对象属性的类型,把Lambda表达式片段的left段所代表的源对象列的值进行类型转换后,赋值给Lambda表达式片段的right段所代表的目标对象属性。本专利技术的,具有以下优点: 本专利技术提出的,可以随时通过一个特定格式的字符串,描述源对象和目标对象实体间的映射关系,并快速的得到需要的对象实体,无需进行复杂的编码;利用这一特点,可以实现数据库中各种数据的快速抓取,并转换为展示所需要的对象实体,特别适合为MVC中的VierwModel层对象实体提供数据,在View确定的情况下,通过不同的配置,即可实现各种数据的模式化展现,实用性强,易于推广。【附图说明】附图1是本专利技术的映射及转换过程示意图。【具体实施方式】下面结合附图和具体实施例对本专利技术作进一步说明。本专利技术公开了,如附图1所示,其具体实现过程为: 一、构建源数据对象DataTable和目标数据对象实体间的映射关系描述字符串; 二、从源数据对象DataTable进行数据抽取; 三、把从源数据对象抽取的数据转换为目标数据对象实体。使用字符串类型的映射关系描述来描述源数据对象与目标数据对象间的映射关系,其映射关系描述基本语法如下: Frto目标对象属性I名称,Frto目标对象属性2名称,......,Frto目标对象属性η名称。其中,Fr to目标对象属性I名称,表示把源对象的某一列映射到目标对象的一个属性;Fr和to是固定关键词;源对象列I名称、源对象列2名称、源对象列η名称,代表源对象的某一列的列名称,根据源对象而定,非特指某一列;目标对象属性I名称、目标对象属性2名称、目标对象属性η名称是目标对象的一个属性名称,根据目标对象而定,非特指。所述映射关系的具体描述语法为: (Fr 运算符Fr )to目标对象属性名称; 其中,运算符包括“ +四种,当运算符前后的对象列的值为整数和数值类型时,使用以上四种运算符中的任何一个;当运算符前后的对象列的值为字符类型时,使用“ + ”运算符。执行对象间的映射及转换时,首先要把映射关系描述字符串转换为符合Linq要求的Lambda表达式。把映射关系描述字符串转换为符合Linq要求的Lambda表达式时,要根据传入的目标对象实体的类型,动态构建目标对象实体类;如果传入的目标对象实体的类型为null,则动态构建一个dynamic类型的实体类。把映射关系描述字符串转换为符合Linq要求的Lambda表达式时,系统会把映射关系描述字符串中的每一个Frto目标对象属性名称转换成一个Lambda表达式片段。把映射关系描述字符串转换为符合Linq要求的Lambda表达式时,当遇到关键词Fr,实现本方法的系统会根据其后的,把其对应到列名称为“源对象列η名称”的数据上,并作为当前Lambda表达式片段的left段。把映射关系描述字符串转换为符合Linq要求的Lambda表达式时,当遇到关键词to,实现本方法的系统会根据其后的“目标对象属性名称”,通过反射的方式获取目标对象实体中“目标对象属性名称”所代表的属性,并把该属性作为当前Lambda表达式片段的right 段。把映射关系描述字符串转换为符合Linq要求的Lambda表达式时,系统会根据Lambda表达式片段的right段所代表的目标对象属性的类型,把Lambda表达式片段的left段所代表的当前第1页1 2 本文档来自技高网...

【技术保护点】
一种数据表与实体类的动态映射及转换方法,其特征在于,其具体实现过程为:一、构建源数据对象DataTable和目标数据对象实体间的映射关系描述字符串;二、从源数据对象DataTable进行数据抽取;三、把从源数据对象抽取的数据转换为目标数据对象实体。

【技术特征摘要】

【专利技术属性】
技术研发人员:田尚杰
申请(专利权)人:浪潮集团有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1