CodeSmith发布代替和扩展LINQ to SQL的工具——PLINQO(转)

CodeSmith 最近发布了一套用于CodeSmith和Visual Studio 2008的模板,叫做PLINQO或Professional LINQ to Objects。这些模板被用于补充微软即将发布的LINQ to SQL的设计功能,其包含了如下很多优秀的特性:

  • 从数据库结构生成或更新LINQ to SQL的dbml文件
    • 包括所有表、存储过程、函数和视图,并能基于正则表达式来排除特定对象
    • 能自动删除对象的前缀和后缀(如:tbl_和usp_)
    • Dbml文件依然能通过普通的Visual Studio 2008设计器来自定义
    • Dbml文件能被当前数据库结构在保持自定义信息的情况下进行同步更新(参看Safe Attributes)
  • 生成LINQ to SQL的DataContext类
  • 生成LINQ to SQL的实体类
    • 为每个实体生成一个文件,而不是只生成一个大型的文件
    • 生成分部类,用于书写自定义代码,以避免被自动生成的代码覆盖
    • 生成的实体文件作为和他们相关的自定义实体文件的后置代码文件被添加到项目里
  • 生成实体管理类
    • 添加可定制的业务逻辑引擎来执行实体验证、业务和安全规则
    • 为基于主键、外键和索引的通用查询提供访问
    • 通用查询可暴露为IQueryable以便能被扩展
  • 所有模板都能被自定义以满足你的需要

InfoQ最近有机会采访了Eric J. Smith(CodeSmith Tools LLC的创始人)和PLINQO有关的事情。Eric解释了发布PLINQO的目的:

很多开发人员,包括我们自己,不喜欢黑盒方式。所以我们创建这些模板的目的就是消除黑盒,并允许我们自己和其他开发人员能够自定义LINQ to SQL设计器的输出内容。我们也希望能扩展生成类的功能,包括业务逻辑、授权逻辑和其他特性。

在PLINQO的宣布博客随笔中,提到他们意欲替换和扩展包含在Visual Studio 2008中的LINQ toSQL设计器。因为微软有他们自己的LINQ to objects和LINQ to SQL技术,InfoQ问到他们的模板是否真能作为LINQto SQL的替代品或LINQ to Objects替代品,并问到为什么取名和微软的重叠?Eric答复:

PLINQO 是个LINQ to SQL替代品,但和LINQ toObjects没有关系。我们知道这可能会引起一些混淆,但是我们真的需要一个有趣的名称,并且我们也非常喜欢PLINQO这个名字。PLINQO就像一种“正确价格”(the Price is Right)的游戏,Plinko,恰好就是“正确价格”游戏中最火爆的一个。:-)

在问到为什么开发人员会采用你们的模板,而不是简单使用微软提供的功能:

使用PLINQO模板而不用设计器有几个优点。下面是一个主要原由的列表:
  • 能轻易地从数据库中生成整个.dbml文件,然后能在数据库结构改变的时候重新生成.dbml文件,并同时保留任何你做出的自定义信息,如实体、熟悉和关系命名。假设使用设计器的话,如果你改变了数据库结构,你需要删除某个实体并重新添加它以得到新的列或数据类型变化,这样会让你失去任何你做出的自定义信息。另外,使用模板允许你排除不想要的表、存储过程和视图,其通过运用过滤器表达式实现;自动的剥离和清理实体和属性的名称,如数据库结构可能使用的前缀和后缀(比如:tbl_Customer 变为 Customer)
  • 业务逻辑引擎运行你执行诸如属性长度规则、必需字段规则、正则表达式数据验证规则以及其他包括授权规则在内的内置规则等事情。数据上下文对象中的SubmitChanges方法将针对你变更集合中任何实体自动运行这些规则。如果不是所有规则都满足,那么一个包含了违反规则列表的BrokenRulesException异常将被抛出。
  • 每个实体都生成了一个管理类,其封装了一个实体能完成的所有动作。已知的通用动作,如通过主键、索引和外键检索实体的动作都会被生成。任何自定义的动作也可以被添加,并在重新生成期间将被保留。虽然LINQ让你实现贯穿整个应用程序的数据访问逻辑变得很容易,我们仍认为它的设计是比较差的,所以这就是我们包含进管理类的原因。

这个模板能工作于CodeSmith 4.0+版本(参看 InfoQ 相关报道),也能工作在安装了CodeSmith4.1的VS2008中。未来的版本,CodeSmith打算添加单元测试、UI生成和WebSerice的生成支持。Paul Welter是这个模板的领头开发人员。Eric同时提到模板正在逐步完善当中,任何反馈都欢迎。我们将欢迎任何反馈和想法。可以查看CodePlex上的项目Quick Start

PLINQO是一个优秀的例子,它体现了我们所期望的那样——CodeSmith和其他第三方能为微软的LINQ技术添加额外的价值。往往就是如此,供应商在看到能为一个基础性技术进行加强的领域后,就为开发人员工作更轻松迈出了步伐。PLINQO 就是为将来更多的工作走出的非常好的第一步。

 

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://lenspe.blogbus.com/logs/37424113.html

posted @ 2009-12-02 15:45  Tony.wang  阅读(1360)  评论(0编辑  收藏  举报