CodeSmith图形界面操作

本文详细介绍如何使用CodeSmith生成NHibernate映射文件及自定义模板,包括界面操作步骤、数据库配置和代码生成过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:

https://www.cnblogs.com/kissdodog/archive/2013/04/16/3023387.html

 

       先从用法开始:以NHibernate模板生成为例:

  1、启动CodeSmith,界面如下:

  

  2、导入模板,点击左上角的文件夹一样的按钮,打开文件选择框,选择模板文件所在文件夹:

  

3、回到主界面就可以看到,模板文件已经被添加进来了。

  

  4、展开文件夹,看到有个.cst后缀的文件,双击它,就会展开如下所示界面:

  

  解释一下个选项的意思:

  OutputDirectory:生成的代码文件输出到的文件夹。

  SourceDataBase:数据库名称

  Assembly:就是生成代码文件的程序集。

  ForceId:是否生成主键,如果选中,当表中没有主键时会报错。

  NameSpace:生成代码文件的命名空间。

  RemoveTablePrifix:要去除的表名前缀。

  5、选择数据库

  在上面的几个选项中,经常要用到选择数据库,点击SourceDataBase选项后面的三个点。弹出选择数据库对话框:

  

  如果你在下拉菜单中,没有看到自己的数据库,那么就可以再次点击后面的两个点,进行配置。点击后看到如下界面:

  

如果在这里没有你自己想要选择的数据库,你可以点击Add按钮进行添加。

  

  其中Name是你要连接的数据库名,然后有个Provider Type的下拉列表框,在这个框里面可以选择需要操作的数据库,如下图:

  

  对于SqlServer应该选择SqlSchemaProvider。

  ConnectionString:数据库连接字符串,你可以点击后面的三个点的按钮来进行生成,点击后界面如下:

  

  是不是很有亲切感,很熟悉啊。

  选择好路径,点击Test Connection测试连接,如果没有问题就连接上数据库了。然后就一路选择OK返回。

  回到主界面后,点击Generate(生成),稍等一会,待进度条全部变成绿色,代码文件就会生成到你设置的目录里面了。

  代码生成之后,CodeSmith会显示如下界面:

  

最后到刚刚设置的输出目录去看看生成的代码文件。

  

  

  没有问题已经出来了,打开文件看看:

复制代码

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
    <class name="MyNamespace.Data.Person, MyApp.MyAssembly" table="Person">
        <id name="Id" type="Int32" unsaved-value="null">
            <column name="Id" length="4" sql-type="int" not-null="true" unique="true"/>
            <generator class="native" />
        </id>
        <property name="Name" type="String">
            <column name="Name" length="50" sql-type="varchar" not-null="true"/>
        </property>
        <property name="Age" type="Int32">
            <column name="Age" length="4" sql-type="int" not-null="true"/>
        </property>
    </class>
</hibernate-mapping>

复制代码

  代码文件:

复制代码

using System;
using System.Collections;
namespace MyNamespace.Data
{
    #region Person
    /// <summary>
    /// Person object for NHibernate mapped table 'Person'.
    ///代码生成器生成
    /// </summary>
    [Serializable]
    public class Person
    {
        #region 私有成员
        protected int _id;
        protected string _name;
        protected int _age;
        #endregion
        #region 初始化
        public Person() { }
        public Person( string name, int age )
        {
            this._name = name;
            this._age = age;
        }
        #endregion
        #region 公共属性
        public virtual int Id
        {
            get {return _id;}
            set {_id = value;}
        }
        public virtual string Name
        {
            get { return _name; }
            set
            {
                if ( value != null && value.Length > 50)
                    throw new ArgumentOutOfRangeException("Invalid value for Name", value, value.ToString());
                _name = value;
            }
        }
        public virtual int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        #endregion
    }
    #endregion
}

复制代码

  虽然代码文件是出来了,但是毋庸置疑的是,你依然要对NHibernate的配置十分了解。下一步还是打算来学习下CodeSmith的语法。

第一个CodeSmith模板

  CodeSmith强大的地方就在于它能够完全按照你的要求生成特定的模板,也就是说你可以完全掌控生成的代码。

  首先,打开CodeSmith,点击左上角的“文件夹图标”,随便选择一个本地空文件夹。

  此时,在主窗体内就会增加了一个文件夹,右键该文件夹,选择NEW->CodeSmith Generator Template(CSharp)。

  

  这样窗体内就出出现一个.cst后缀的文件。这个文件就是模板文件了。当然现在是空的。现在我们就在这个文件上面编写代码。

  右键点击该.cst文件,选择Edit,这时CodeSmith模板编辑器就启动了。

  

  非常亲切,因为这个东西模板是仿照VS2010来做的。

  

我们在上面键入以下代码:

<%--Language:当前模板使用的语言 ResponseEncoding:输出文件的编码格式 Description:当前模板的描述--%>
<%@ CodeTempLate Language="C#" ResponseEncoding="UTF-8" Description="第一个模板程序" %>
Hello Wlord
<%= DateTime.Now.ToString() %>

  点击生成按钮

  

  我们就可以看到输出的内容如下了:

  

  图形界面方面的操作,就到这里。以后主要学习的是模板代码的编写。

CODEV使用手册2 容许公差 你可能熟悉莫非准则:任何可能出错的事情都会出错。公差就是试图通过模拟:何种类型的误差会发生、它们在多大程度上影响光学系统的性能以及建造一个可以工作的系统的概率有多大等问题使Murphy定律不适用。 CODE-V 有一些用于进行公差分析的工具,包括一个被称为的强有力的属性。其它的工具被用来分析用户自定义的公差要求和蒙特卡罗(Monte Carlo)仿真。 目录 莫非准则…………公差分配和TOR..………公差类型………用LDM确定公差和TOR.. …………的输出…………………………其它的公差分析属性………… 莫非准则 光学系统对加工精度有一定的要求。在许多机械装置中不太明显的误差在光学系统中可能会造成严重的成像质量问题。因为没有任何事情可以做得非常完美,因此,误差必然会产生。公差分析就是要弄明白在建造一个光学系统中,以及在建成之前预测它们的影响中会出现的误差类型。你不能够推翻Murphy定律,但是,可以弄懂何处会出错,确定对误差的限制,以及预测它们的影响,从而限制误差。 何种项目会出错? 一个共轴光学系统由不多的几个参数就可以确定,主要是每个表面的曲率、厚度、和玻璃材料。但是,这这几个参数会使许多事情出现错误,包括: ●错误的曲率(通常用样板的吻合度来测试,DLF,加上柱面的不规则度,IRR))))))) 这里提供的透镜目录称为CV_LENS:而且在缺省安装中被 定义为C:\CODEV\LENS。这是一个Cooke三片型物镜(f/4.5,20o半视场角,50mm焦距)。该样本透镜没有事先确定公差。 2选择Analysis>Tolerancing>RMS Wavefront Error菜单。显示出RMS wavefront error对话框,选择均方根波前误差作为光学成像质量的判别标准。 3敲击OK开始运行。从这点少量的输入,该程序将会产生许多行输出结果( 与该运行相等效的输入命令是TOR;GO )。公差是一个标准缺省组,与一个单补偿元(像面的Z向移动,例如调焦)一起被用在逆灵敏度模式中。滚动输出视窗文本列表就中可以查看输出结果。由于马上你就要亲自完成一次类似的运行,所以,我们就不再对该具体输出结果 进行解释了。你将要完成的那个运行比较典型,对公差,补偿元和一些TOR控制的设置都有精确的定义。我们将会对那个运行的输出进行讨论。 设置公差 正如前面所述,公差实际上被认为是透镜数据的一部分,因此,在LDM中被定义、查看和编辑。当透镜被保存时,它们也被保存在 .len文件中。 1选择File>Open菜单,并且,在CODEV提供的透镜目录中设置透镜文件cooke1.len。 这是一个事先定义好了的,和前面例子中一样的透镜文件;为了确保在这个使用中有正确的结果,需要重新打开该透镜文件。 2选择Review>Tolerance菜单。 显示Tolerances and Compensators视窗。注意,由于cooke1.len 没有包含任何缺省公差值,所以,这个视窗是空的。 3敲击LDM视窗表上端的Autofill键,打开Tolerance Spreadsheet Autofill对话框。 该例子采用缺省设置(对所有的表面都产生缺省公差)是可以的。4敲击OK ,确定公差。 在Tolerances and Compensators视窗中显示出的公差是标准的缺 省值。向下滚动,并且会注意到,对于这个有6个表面的共轴透镜来说,已经产生了53个缺省公差。使用右击,可以从列表中加上(Insert)或者删除(Delete))公差。每一个没有变成灰色的单元格都是可编辑的(例如,双击Type项,可以把它改变成另外一个不同的类型)。 提示:要改变视窗中任何一列的宽度右击该列的前端,并且选择Column Width(对于Type列选择120就很适合)。 到现在为止,还没有对这些公差的效应做过任何计算(这是TOR要做的)。还必须确定一个离焦补偿元;一旦你开始确定公差和补偿元,那么,CODE V就假定你将会确定你所需用的一切,就不再需要自动生成什么了。 5在Tolerances and Compensators视窗底部补偿元表格中右击End of Data栏。 6从快捷菜单中选择Insert。 7双击Start Surface单元格,并且选择Image表面。 8对于这个新的补偿元双击Type单元格,并且滚动设置和选择Z Surface Displacement作为该补偿元,如下所示。 如果是像面,厚度(DLT)和Z轴位移(DLZ)是等效的,不需要真正地改变缺省值,当然,演示除外。一般来说,DLT是通过向后推移后续表面的面来改变厚度,而DLZ仅仅是移动该表面,其它的表面不发生变化。 9 敲击顶端处的Commit键,或者敲击公
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值