« 到底什么是 O/R Mapper | Main | 用六度分割买火车票,测试中,不断更新 »

O/R Mapper和代码生成器有什么不同?

作者:virushuo 发表于 2004-01-05 17:01 最后更新于 2005-10-14 16:10
版权声明:按照by-nc-sa的cc协议可转载,拒绝采用“独家” 授权媒介(含网站和平面媒体)转载、引用、链接,除非获得本人许可。转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。


原文:http://dotnetjunkies.com/weblog/seichert/posts/4699.aspx


  上一个贴子里面,我大概介绍了O/R Mapper。一些回复认为O/R Mapper类似于代码生成器。
O/R Mapper和代码生成器有什么不同呢?
  代码生成器使用一些设置好的模版来生成一串完成的代码。当一些部分有所变化的时候,需要代码生成器重新生成全部代码。
  O/R Mapper是一种组件framework,这种framework可能使用运行时代码生成方式来辅助从对象到关系数据库的映射,但是它不仅仅只是把DAL代码生成出来。让我们来用一个简单的例子说明。
  在我的O/R Mapper中,我使用了运行时代码生成的方式。生成的代码不会被使用Mapper的开发者看到或人工编译。下面我们一步一步来看我的mapper是怎么样作代码生成的。

一步,如前所述,生成传统代码,生成器建立对象和对象的属性和进行mapping所需要的属性。对象建立之后就可以被编译到程序集中了。这时候,还不存在
用于从数据库保存,删除,读取对象的代码。当应用程序运行时,一旦程序保存对象信息,动态代码和SQL即被framework生成,并且被编译为动态程序
集。动态程序集被缓存,然后被framework用来处理并发请求,保存对象数据。



  • 开发者不需要看到,也不要关系这部分代码。

  • 开发者不需要用另一个工具来生成代码。
  • 生成出的程序集永远是新的。

  总之,代码生成器就是代码生成器,但O/R mapper可能会在其framework中使用运行时代码生成器 辅助对象到数据库映射,但,他不仅仅是代码生成器。
  你不会看到他生成的代码(一般来说),他减轻了开发者编写和管理DAL代码的负担。与其考虑写(或使用代码生成器生成)保存,删除,读取的代码,不如多去考虑业务逻辑和程序需求,让O/R Mapper去做那些事情吧!

相关文章:
blog comments powered by Disqus
CC License. Some rights reserved.
署名·非商业用途·保持一致
本站之所有未作特别说明的内容均使用 创作共用协议.
POWERED_BY_MT_3.2