CodeSmith实用技巧(十二):自动执行SQL脚本

CodeSmith中,如果生成的代码是SQL脚本,则可以在生成代码完成时自动执行生成的代码,也就是在生成的SQL脚本的同时在数据库中创建新的对象。

BaseTemplates.ScriptUtility对象提供ExecuteScript方法可以实现,如果想在生成代码完成后立即执行生成的脚本,可以很方便的通过重载OnPostRender来实现。

在使用之前,先添加对下列程序集的引用:

<%@ Assembly Name="CodeSmith.BaseTemplates" %>
<%@ Import Namespace="CodeSmith.BaseTemplates" %>

看下面的这个例子:

protected override void OnPostRender(string result) 
{
    
// execute the output on the same database as the source table.
    CodeSmith.BaseTemplates.ScriptResult scriptResult = 
     CodeSmith.BaseTemplates.ScriptUtility.ExecuteScript(
this.SourceTable.Database.ConnectionString, 
     result, 
new System.Data.SqlClient.SqlInfoMessageEventHandler(cn_InfoMessage)); 
    Trace.Write(scriptResult.ToString());
    
base.OnPostRender(result);
}


在这个例子中SourceTable是一个类型为SchemaExplorer.TableSchema.的属性,使用的时候需要调整部分代码来获取数据库的连接以便在生成代码完成后执行脚本。

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2005-12-28 18:30 TerryLee 阅读(2254) 评论(1)  编辑 收藏 所属分类: CodeSmith

  回复  引用    
#1楼 2006-04-04 12:19 | hf [未注册用户]
cn_InfoMessage 是什么东西

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
成果网帮您增加网站收入


相关链接: