明论  
 
   原来一致力于公司ORM框架的开发,最近利用跳槽之余,好好学习了微软的LinQ技术,在此之前,先介绍下我一直使用的ORM框架

这是于一年前开发的ORM框架,有如下特点:
1,其中黄色部分就是代码自动生成的部分,每一个表有一个对象对应,生成的DAL层有现成的API包括查询,插入,更新,删除,分页的基本功能。当表结构变更时。能用生成器重新生成原有部分,原系统不受任何影响。
2,其中的FacadeModelBase的针对该框架对跨表显示,和外观层显示的扩展,在C#中描述为对Model层的继承,是Model的子类,这样,在外观层Facade显示的一些特殊部分就可以在该层添加,比如:男在数据库为1.女为0,显示时男显示为头像1,男显示为头像2,那在这可以为该FacdeModel添加属性FaceURL将头像的逻辑添加进去。该框架使用时能很好的适应需求的变更,开发效率也挺快,后来成为我开发的主流框架。

当看到微软的LinQ技术时,我意识到我上述的那套方案就要过时了,毕竟对于Data-to-Object我结合其他框架做得再完善也不如微软做得好,那如何对现有框架进行LinQ的整合才是我首要的工作。
1,对比与原有框架的变化
    在MSDN的LINQ to sql中我们可以明显的看出和我上述提到的框架一样,LinQ to SQL将代码生成首先介绍,用sqlmetal工具将生成一个CS的文件,
运行sqlmetal /code:northwind.cs /language:csharp "c:\northwnd.mdf" /sprocs /functions /pluralize之后,生成的northwind.cs的文件,
让我们看看这个代码文件到底包含什么(我使用的时northwind数据库):
(1)Model sqlmetal将数据的表结构转化为模型,并带有SQL数据类型的信息。
(2)对象Table<T>的属性,继承了数据的基本操作,查询,插入等
(3)利用LINQ查询语言获取对象的集合。
我们可以从中大致推断除LINQ技术造成我们原有框架的变化,
(1)生成的模型:由微软给我们看到的模型中我们可以看到一个未来ORM应具备的模型的强大功能,复杂的属性,事件,验证功能。。。
(2)DAL中的API也转化为由LINQ中API为我们提供的强大功能。
但这只是我们的最初的主观印象,由此来作为我们框架制定的判断太过武断,为此我们先来参考下一个很牛B的框架Hibrenate的做法:


  在Hibernate架构或者大多数ORM技术中,我们怎么来提高生产效率和产品的可伸缩性呢?以下是其中方法:
  建模-> 建数据库->XML Mapping->生成代码->开始项目
说到这里不得说一下ORM的真实意义(见到有人评价说LinQ就是将SQL较简单操作用C#表示,让不会操作SQL的人用C#读写数据,这个提法实在靠不住,难道框架的意义就是给懒得学习SQL的人的一包速食面?),但事实ORM的意义在于将关系型数据转化为现实意义中的对象,为什么要这样做呢?也很简单,我们的产品要随现实的变化而变化,而关系型数据库于无法表现现实中的所有关系,为此需要有一种工具,让 现实需求---我们设计的程序模型--数据表 保持同步关系,于是,ORM诞生了。


  文前:本文水平浅显粗漏,错误百出,希望能有高手指正,万谢!!!!!
续待。。。。。。。。。


posted on 2008-04-21 11:52  konyel  阅读(744)  评论(1)    收藏  举报