当前位置: 首页 > 专利查询>微软公司专利>正文

代码生成模式制造技术

技术编号:5623347 阅读:182 留言:0更新日期:2012-04-11 18:40
本公开关于在对象关系映射中使用的代码生成模式。该代码模式可用于管理双向关系并确保一致性。该代码模式可支持按需或延期的关系数据加载。也提供了改变检测和跟踪。另外,默认成员修改器允许开发员在不直接修改生成的源代码的情况下覆盖工具生成的源代码。

【技术实现步骤摘要】
【国外来华专利技术】代码生成模式北旦 冃豕由于存储器和处理能力的持续增长,代码生成成为了增加程序员生产力的流 行方法。近年来,代码生成器的流行度增长了。代码生成器自动生成源级语言代码(例如,C、 C#、 VisualBasic、 Java...)。使用自动生成的代码可减少开发时间并 增加代码的稳定性。具体地,代码生成在对象关系映射(ORM)上下文中变得流行。关系数据存 储系统(例如,DB2、 SQLServer、 MySQL)被用来存储关系数据并管理其关系。 用源级语言开发的软件访问并操纵存储在关系数据存储系统中的关系数据是有益 的。当应用程序软件正管理关系数据时,它应维护数据中固有的关系。另外,对关 系数据的任何改变或修改应被存回关系数据存储系统。概述以下呈现了简化的概述以便于提供对所要求保护的主题的某些方面的基本理 解。该概述不是详尽的概观。它不旨在标识关键/重要的元素也不描绘所要求保护 的主题的范围。其唯一目的是以简化形式呈现某些概念作为稍后呈现的更详细描述 的序言。简而言之,所提供的主题涉及计算机生成源。更具体地,本主题涉及与在管 理数据关系同时将关系数据映射到对象模型相关的机器生成的源代码。描述了在数 据对象之间提供双向关系的代码生成模式。生成的对象模型可支持从数据存储系统中按需(on-demand)或延期的关系数 据加载。对象模型可利用通用类型来创建对应于数据存储系统数据表的一组数据 表。这允许数据存储系统被表示成包含用于映射到对象模型的每一数据存储系统数 据表的数据表的类。对象模型也能够检测并跟踪从数据存储系统中采集的对数据的改变。该系统 提供标识更新数据并防止对经修改的数据存储系统数据重写的高效方法。另外,提供默认成员修改器。默认修改器向开发员提供在不直接修改源代码 的情况下覆盖工具生成的源代码的能力。为了实现前述和相关目的,此处结合以下描述和附图描述了所要求保护的主 题的某些说明性方面。这些方面指示可实现本主题的各种方式,它们均旨在落在所 要求保护的主题的范围之内。当结合附图考虑以下详细描述时,其他优点和新颖的 特征将是显而易见的。附图简述附图说明图1是用于工具生成源代码的编译系统的框图。 图2是用于处理默认类成员的方法的流程图。图3是ORM系统的框图。图4是示出顾客定单关系的框图。图5是用于将数据对象添加到容器而同时维护数据对象关系的方法的流程图。 图6是用于从容器中移除数据对象而同时维护数据对象关系的方法的流程图。 图7是用于添加或移除数据对象引用而同时管理数据对象关系的方法的流程图。图8是示出用于为ORM系统执行延期加载的方法的流程图。图9是示出用于创建对应于数据存储系统表的一组数据对象表的方法的流程图。图IO是示出用于跟踪经修改的对象的方法的流程图。图11是示出用于将对关系数据的修改存到数据存储系统的方法的流程图。图12是示出合适的操作环境的示意性框图。图13是示例计算环境的示意性框图。详细描述现在参考附图描述所要求保护的主题的各方面,在全部附图中,同样的参考 标号指的是相同或相应的元素。然而,应该理解,附图及其涉及的详细描述不旨在 将所要求保护的主题限制于所公开的具体形式。相反,意图是覆盖落入所要求保护 的主题的精神和范围内的所有修改、等效方式和替换方式。如此处所使用的,术语"组件"和"系统"等指的是计算机相关的实体,或 者是硬件、硬件和软件的组合、软件或者是执行中的软件。例如,组件可以是,但 不限于,运行在处理器上的进程、处理器、对象、可执行代码、执行的线程、程序 和/或计算机。作为说明,运行在计算机上的应用程序和计算机本身均可以是组件。一个或多个组件可以驻留在进程和/或执行中的线程内,且组件可以位于一台计算 机上和/或分布在两台或多台计算机之间。词语"示例性"此处被用来意味着用作示例、实例或说明。此处描述为"示 例性"的任何方面和设计不必解释为较其它方面或设计更优选和有利。另外,尽管 所提供的示例利用了 C辨呈序设计语言,但可使用众多替换的程序设计语言。此外,所公开的主题可被实现为系统、方法、装置或制品,它们使用标准程序 设计和/或工程技术来生产软件、固件、硬件或其任何组合,以控制基于计算机或 处理器的设备来实现此处详细描述的各方面。如此处所用的术语"制品"(或"计 算机程序产品")旨在包含可从任何计算机可读设备、载波或介质访问的计算机程 序。例如,计算机可读介质可包括,但不限于,磁存储设备(例如,硬盘、软盘、 磁条…)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)…)、智能卡和闪存设备(例如,卡、棒)。另外,应该理解,可使用载波来携带计算机可读电子数据,诸如在发送和接收电子邮件或访问诸如因特网或局域网(LAN)等网络中 所使用的那些。当然,本领域的技术人员可以认识到,可以对此配置进行多种修改, 而不背离所要求保护的主题的范围或精神。I.默认成员修改器现在参考图1, 一般而言,程序员使用代码生成工具或源代码生成器来为程序 产生初始结构然后修改生成的源代码。然而,如果在软件开发期间有必要再次生成 代码,则开发员对生成的代码的改变将被重写。因此,开发员可创建单独的源代码 文件。某些源级语言便于使用单独的源文件来对生成的代码进行修改。例如,C# 提供允许类和接口被分成多个片段和单独源文件的局部类型(partialtype)。工具 生成局部类(partial class)可在编译期间与开发员编写的局部类合并,使得每一局 部类可独立创建和维护。图l示出了一编译系统。在编译期间,开发员源代码102 和生成的源代码104可由编译器组件106组合。得到的实现代码108(例如可执行、 中间语言)如同开发员源代码102和生成的源代码104被写入单个单元中一般。局部类向软件开发员提供向工具生成的源代码中声明的局部类添加成员的能 力,但不允许开发员修改生成的源代码中声明的成员。局部类的成员可在生成的源 代码或开发员代码任一种中声明,但不能同时在两者中声明。如果对局部类的一成 员被声明了一次以上,则编译器将生成冲突。代码生成器可提供默认类成员修改器。默认成员修改器指示该成员声明将在缺乏非默认成员声明的情况中使用。因此,默认成员可用非默认类成员重写。这向 软件开发员提供了在编译期间不生成冲突的情况下修改工具生成的局部类成员的 一种机制。图2是示出用于处理默认成员的方法200的流程图。于参考标号202开始, 编译器接收源代码。源代码可由代码生成工具、软件开发员或两者产生。在204, 检测到默认成员修改器。当编译器找到局部类中的默认成员时,在206处,编译器 组件确定是否存在覆盖该默认成员的相同名字的类成员。覆盖成员可能位于分开的 开发员创建源文件中。如果存在非默认或覆盖成员,则在208,编译器将利用覆盖 成员的源代码并忽略默认源代码。在212,使用覆盖源代码来生成实现代码。然而, 当不存在任何覆盖代码时,在210,利用默认源代码,且在212实现代码包含默认 源代码。编译过程在214终止。考虑生成的源代码文件Customerl.es中的以下C弁类声明partial class Customerpublic default string Name { get{return name;set {name本文档来自技高网...

【技术保护点】
一种计算机生成的对象关系映射系统,包括: 第一数据对象组件,包括对应于第二数据对象组件的对象信息;以及 所述第二数据对象组件,包括对应于所述第一数据对象组件的对象信息,所述第一或第二数据对象组件之一向所述第一或第二数据对象组件中的另一个通知所述相应对象信息中的改变。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:DC库尔卡尼A赫杰斯伯格MJ沃伦L伯洛格纳斯HJM梅杰PA豪拉姆
申请(专利权)人:微软公司
类型:发明
国别省市:US[]

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

1