Dbml文件提取建表TSql-CodeSmith

简介:

在昨天一个大学师弟,他问我能不能将LinqToSql文件转化为创建表的TSql语句,他是刚开始学习.NET,所以在网上下些示例看,但苦于没有数据库。所以就有了这一篇博客,作为我的Code生成技术的CodeSimth的最后一篇示例。在下一步Code 生成技术将转到Microsoft的T4模板,Code生成技术目前完成的有CodeDom,CodeSmith模板,高手请不要拍砖,请直接跳过。

     在Linq2Sql的Dbml文件其实就是一个Xml文件,记录着数据库与生成Linq2SqlCode的数据信息,所以转化为TSql没有什么说的。我们需要提取其中的数据库信息,在转化为我们的Tsql,在这里建立了DBTable、DBColumn、DBAssociation三个实体类:

代码

    其中DBTableHlper是由于我的Codesimth是2.0版本的,不能用lamdam表达式,所以我将它编译在程序集里面。

   建立了一个 将我们的dbml文件xml Document转化为实体类辅助类:

代码

   在转化为我们的实体类,我们剩下的就是编写我们的CodeSmith模板了(更多知识可以参考CodeSmith模板):

代码

    在codeSimth中我们建立了一个集合属性传递实体类DBTable和一个转化TSql辅助方法.

      在控制台调用编译模板以及输出:

代码

   在CodeSimth中就是这么简单,生成相应的模板代码(个人理解CodeSmith就是把代码作为字符串输出)。

在上面到我的CodeSmith模板编译辅助类,在上一篇通过代码生成机制实现强类型编程-CodeSmith版也有,在这里也附带上:需要引用CodeSmith.Engine.dll.

代码


本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2010/09/27/1836731.html,如需转载请自行联系原作者

目录
相关文章
|
SQL 数据库
PowerDesigner导出SQL脚本运行注释出现乱码问题
PowerDesigner导出SQL脚本运行注释出现乱码问题
314 0
|
7月前
|
安全
Doxygen常用语法与字段记录
【代码】Doxygen常用语法与字段记录。
68 0
Doxygen常用语法与字段记录
|
SQL Oracle 关系型数据库
PowerDesigner生成的建表脚本中如何把对象的双引号去掉
PowerDesigner生成的建表脚本中如何把对象的双引号去掉
151 0
|
SQL 关系型数据库 MySQL
一键导出PostgreSQL数据库表设计为word文档
项目开始时,数据库表设计是从概要设计到详细设计,再到数据库中的表结构,有一套完整的文档
1225 0
一键导出PostgreSQL数据库表设计为word文档
|
SQL 数据库 数据库管理
powerdesigner导出sql文件
powerdesigner导出sql文件
powerdesigner导出sql文件
|
SQL Web App开发 数据库
|
Linux 数据库 数据库管理
kettle 抽取 sqlite文件
sqlite 本身没有太多研究,因此总结可能会有问题,希望大家能够提出错误,并加以修改。 背景: 用户需要的数据存放到sqlite数据库文件,拷贝数据库文件,安装客户端可以访问具体数据(oracle应该不可以) ...
1939 0