网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > .Net编程 > 正文

CodeSmith的使用

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

一、工具设置
CodeSmith默认是不支持中文的,那么我们必须要先设置使其支持中文显示,保存。并且要能够在生成文件中支持中文。

[Tools->Options->Studio->Editor->Enable unicode]将这个选项勾上,那么CodeSmith就可以显示和保存中文了。

在你的模板的最前面的一句话,C#为例:

  1. <%@ CodeTemplate TargetLanguage="Text" Src="" Inherits="" Debug="False" CompilerVersion="v3.5" Description="Template description here." %> 

中加入ResponseEncoding="UTF-8" 的标签。将会使得生成的文件也支持中文。

[Tools->Options->Studio->Editor->Convert tab to]去掉这个的勾选,就是不使用空格来替换Tab。

二、 模板区域说明

CodeSmith的模板分为六个区域:模板说明区域,属性设置区域,注册模板区域,引用声明区域,模板区域,函数区域。

(一) 模板说明区域,只有一句话:

  1. <%@ CodeTemplate ResponseEncoding="UTF-8" TargetLanguage="Text" Src="" Inherits="" Debug="False" CompilerVersion="v3.5" Description="这里是模板说明" %> 

(二) 属性设置区域

你模板需要那些外接参数,都可以写在这里。当然还有一些其他的参数需要些在函数区域,在后面我们再来描述。

1) String类型参数声明:

  1. <%@ Property Default="AAA" Optional="True" Category="输入参数" Description="这是一个字符串型的参数" %> 

2) Bool类型参数声明:

  1. <%@ Property Default="True" Optional="False" Category="输入参数" Description="这是一个布朗型的参数" %> 

3) DatabaseSchema类型参数声明

  1. <%@ Property Category="Context" Description="这是一个数据库" %> 

4) TableSchemaCollection类型参数声明:

  1. <%@ Property Category="Context" Description="这是一个数据表集合" %> 

5) TableSchema类型参数声明:

  1. <%@ Property Category="Context" Description="这是一个数据表" %> 

(三) 注册模板区域

在你的模板中可以调用其他的模板用于生成,当然,你调用的模板所需要的参数你都必须给出。注册代码如下:

  1. <%@ Register Template="B.cst" MergeProperties="False" ExcludeProperties="" %> 

这就是将B模板注册到A模板中。

(四) 引用声明区域

在这里要将我们使用到了的应用集都在这里写出来,如果使用到数据库就一定要添加下面的两个。

  1. <%@ Assembly %> 
  2.  
  3. <%@ Import Namespace="SchemaExplorer" %> 

要自己控制输出文件的话就需要添加:<%@ Import Namespace="System.IO" %>

(五) 模板区域

这里就是我们控制要输出的文件或者界面的内容。

直接输出值为

  1. <%= ThisIsString %> 

调用代码为<% if (ThisIsBool) { %>A<% } %> 如果ThisIsBool为true则输出A。

(六) 函数区域

在这里我们可以定义我们自己的函数,用于一些复杂的组合、代码的重用等。代码格式和C#完全一样。

三、模板编写方法

A. 直接输出
在模板区域直接输入文本,就会直接输出的output里面了。

B. 变量输出
例如输出ThisIsString的变量值:

  1. <%= ThisIsString %> 

再例如输出ThisIsTable的名字:<%= ThisIsTable.Name %>

C. 调用函数

例如,如果输入的ThisIsBool为true就输出A字符。

  1. <% if (ThisIsBool) { %>A<% } %> 

D. 调用模板

这里我们将在A模板内调用并显示B模板。每个模板都有一个Response来存储模板输出的。模板显示是调用Render()方法来完成的。

  1. <% for(int i = 0; i < ThisIsTableList.Count; i++) 
  2.  
  3.  
  4.     B b = new B(); 
  5.  
  6.     b.ThisIsTable = ThisIsTableList[i]; 
  7.  
  8.     b.Render(this.Response); 
  9.  
  10. } %> 

E. 遍历Database或TableCollection内的表

这里我们可以使用for或者foreach做循环,为了通用性例子全部使用for做循环。

遍历ThisIsDatabase并输出表名

  1. <% for (int t = 0; t < ThisIsDatabase.Tables.Count; t++) { %> 
  2.  
  3.     <%= ThisIsDatabase.Tables[t].Name %> 
  4.  
  5. <% } %> 

F. 遍历Table的列

遍历ThisIsTable的列并且生成类似如下格式的语句:

  1. //数据库类型:DbType.int 
  2.  
  3. private int _ID; 

这里调用了一个方法DataType2CSharpType(System.Data.DbType dbType)在后面将会讲到。

  1. <% for (int c = 0; c < ThisIsTable.Columns.Count; c++) { %> 
  2.  
  3.     //数据库类型:DbType.<%= DataType2CSharpType(ThisIsTable.Columns[c].DataType) %> 
  4.  
  5.     private <%= DataType2CSharpType(ThisIsTable.Columns[c].DataType) %> _<%= ThisIsTable.Columns[c].Name %>; 
  6.  
  7.     
  8.  
  9. <% } %> 

输出结果:

  1. //数据库类型:DbType.int 
  2.  
  3.    private int _ID; 
  4.  
  5.    //数据库类型:DbType.int 
  6.  
  7.    private int _ClassID; 
  8.  
  9.    //数据库类型:DbType.string 
  10.  
  11.    private string _StudentName; 

G. 遍历Table的PK

  1. <% for (int c = 0; c < ThisIsTable.PrimaryKey.MemberColumns.Count; c++) { %> 
  2.  
  3. 主键<%= c %>:<%= ThisIsTable.PrimaryKey.Name %> 
  4.  
  5.     <%= ThisIsTable.PrimaryKey.Table.Name %>.<%= ThisIsTable.PrimaryKey.MemberColumns[c].Name %> 
  6.  
  7. <% } %> 

输出结果 :
主键0:PK_Student
Student.ID

H. 遍历Table的FK(Table自己是外键表<即Table为明细表>)

这里说明下,下面的代码仅仅只是对FK里面的列是一对一的有效,如果是多对多的FK需要修改下面的0的地方为循环即可。

  1. <% for (int c = 0; c < ThisIsTable.ForeignKeys.Count; c++) { %> 
  2.  
  3. 外键<%= c %>:<%= ThisIsTable.ForeignKeys[c].Name %> 
  4.  
  5.     外键<%= c %>对应的列 
  6.  
  7.     <% for (int i = 0; i < ThisIsTable.ForeignKeys[c].PrimaryKeyMemberColumns.Count; i++) { %> 
  8.  
  9.         <%= ThisIsTable.ForeignKeys[c].ForeignKeyTable.Name %>.<%= ThisIsTable.ForeignKeys[c].ForeignKeyMemberColumns[0].Name %> <——来自于 <%= ThisIsTable.ForeignKeys[c].PrimaryKeyTable.Name %>.<%= ThisIsTable.ForeignKeys[c].PrimaryKeyMemberColumns[0].Name %> 
  10.  
  11.     <% } %> 
  12.  
  13. <% } %> 

输出结果:

外键0:FK_Student_Class

外键0对应的列

I. 遍历Table的FK(Table自己是主键表<即Table为父表>)

  1. <% for (int c = 0; c < ThisIsTable.PrimaryKeys.Count; c++) { %> 
  2.  
  3. 其他表外键<%= c %>:<%= ThisIsTable.PrimaryKeys[c].Name %> 
  4.  
  5.     其他表外键<%= c %>对应的列: 
  6.  
  7.     <% for (int i = 0; i < ThisIsTable.PrimaryKeys[c].PrimaryKeyMemberColumns.Count; i++) { %> 
  8.  
  9.         <%= ThisIsTable.PrimaryKeys[c].PrimaryKeyTable.Name %>.<%= ThisIsTable.PrimaryKeys[c].PrimaryKeyMemberColumns[0].Name %> 作用于——> <%= ThisIsTable.PrimaryKeys[c].ForeignKeyTable.Name %>.<%= ThisIsTable.PrimaryKeys[c].ForeignKeyMemberColumns[0].Name %> 
  10.  
  11.     <% } %> 
  12.  
  13. <% } %> 

输出结果:

其他表外键0:FK_ExamScore_Student
其他表外键0对应的列:

Student.ID 作用于——> ExamScore.StudentID

四、 函数区域用法

之前我们提到过,有些参数必须要写在函数区域中。当然这些参数就是需要有一些其他组件支持的参数了,比如弹出一个窗口选择文件,或者弹出一个选择文件夹的窗体,用于输入的参数。

1) 添加一个选择目录的输入参数
下面我们就是定义了一个输入参数OutputDirectory,在运行的输入参数界面,点击这个参数的输入框就会弹出一个选择目录的窗口。

  1. private string templateOutputDirectory = ""
  2.  
  3.     
  4.  
  5.     [Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor))] 
  6.  
  7.     [Optional, NotChecked] 
  8.  
  9.     [Category("OutputInfo")] 
  10.  
  11.     [Description("输出结果的目录。")] 
  12.  
  13.     [DefaultValue("")] 
  14.  
  15.     public string OutputDirectory 
  16.  
  17.     { 
  18.  
  19.         get 
  20.  
  21.         { 
  22.  
  23.             if (string.IsNullOrEmpty(templateOutputDirectory)) 
  24.  
  25.             { 
  26.  
  27.                 return "C:\\"+ (ThisIsDatabase!= null ? ThisIsDatabase.Name : "Output"); 
  28.  
  29.             } 
  30.  
  31.             else 
  32.  
  33.             { 
  34.  
  35.                 return templateOutputDirectory; 
  36.  
  37.             } 
  38.  
  39.         } 
  40.  
  41.         set 
  42.  
  43.         { 
  44.  
  45.             if (value.EndsWith("\\")) value = value.Substring(0, value.Length - 1); 
  46.  
  47.             templateOutputDirectory = value; 
  48.  
  49.         } 
  50.  
  51.     } 

2) 添加一个选择文件的输入参数

下面我们就是定义了一个输入参数OutputFile,在运行的输入参数界面,点击这个参数的输入框就会弹出一个选择文件的窗口。

  1. private string templateOutputFile; 
  2.  
  3.    
  4.  
  5.    [Editor(typeof(System.Windows.Forms.Design.FileNameEditor), typeof(System.Drawing.Design.UITypeEditor))]    
  6.  
  7.    [Optional, NotChecked] 
  8.  
  9.    [Category("OutputInfo")] 
  10.  
  11.    [Description("输出文件")] 
  12.  
  13.    [DefaultValue("")] 
  14.  
  15.    public string OutputFile 
  16.  
  17.    { 
  18.  
  19.        get 
  20.  
  21.        { 
  22.  
  23.            if (string.IsNullOrEmpty(templateOutputFile)) 
  24.  
  25.            { 
  26.  
  27.                return "C:\\"+ (ThisIsDatabase != null ? ThisIsDatabase.Name + ".cs" : "Output.cs"); 
  28.  
  29.            } 
  30.  
  31.            else 
  32.  
  33.            { 
  34.  
  35.                return templateOutputFile; 
  36.  
  37.            } 
  38.  
  39.        } 
  40.  
  41.        set 
  42.  
  43.        { 
  44.  
  45.            templateOutputFile = value; 
  46.  
  47.        } 
  48.  
  49.    } 

3) 将数据库类型转化为C#类型的函数

输入DbType的类型转化后输出C#的类型的字符串。这个函数很常用到。

  1. public string DataType2CSharpType(System.Data.DbType dbType) 
  2.  
  3.     { 
  4.  
  5.         switch (dbType) 
  6.  
  7.         { 
  8.  
  9.             case DbType.AnsiString: 
  10.  
  11.                 return "string"
  12.  
  13.             case DbType.AnsiStringFixedLength: 
  14.  
  15.                 return "string"
  16.  
  17.             case DbType.Binary: 
  18.  
  19.                 return "byte"
  20.  
  21.             case DbType.Boolean: 
  22.  
  23.                 return "bool"
  24.  
  25.             case DbType.Byte: 
  26.  
  27.                 return "byte"
  28.  
  29.             case DbType.Currency: 
  30.  
  31.                 return "decimal"
  32.  
  33.             case DbType.Date: 
  34.  
  35.                 return "DateTime"
  36.  
  37.             case DbType.DateTime: 
  38.  
  39.                 return "DateTime"
  40.  
  41.             case DbType.DateTime2: 
  42.  
  43.                 return "DateTime"
  44.  
  45.             case DbType.DateTimeOffset: 
  46.  
  47.                 return "DateTime"
  48.  
  49.             case DbType.Decimal: 
  50.  
  51.                 return "decimal"
  52.  
  53.             case DbType.Double: 
  54.  
  55.                 return "double"
  56.  
  57.             case DbType.Guid: 
  58.  
  59.                 return "Guid"
  60.  
  61.             case DbType.Int16: 
  62.  
  63.                 return "short"
  64.  
  65.             case DbType.Int32: 
  66.  
  67.                 return "int"
  68.  
  69.             case DbType.Int64: 
  70.  
  71.                 return "long"
  72.  
  73.             case DbType.Object: 
  74.  
  75.                 return "object"
  76.  
  77.             case DbType.SByte: 
  78.  
  79.                 return "sbyte"
  80.  
  81.             case DbType.Single: 
  82.  
  83.                 return "float"
  84.  
  85.             case DbType.String: 
  86.  
  87.                 return "string"
  88.  
  89.             case DbType.StringFixedLength: 
  90.  
  91.                 return "string"
  92.  
  93.             case DbType.Time: 
  94.  
  95.                 return "DateTime"
  96.  
  97.                 
  98.  
  99.             case DbType.UInt16: 
  100.  
  101.                 return "ushort"
  102.  
  103.             case DbType.UInt32: 
  104.  
  105.                 return "uint"
  106.  
  107.             case DbType.UInt64: 
  108.  
  109.                 return "ulong"
  110.  
  111.             case DbType.VarNumeric: 
  112.  
  113.                 return "decimal"
  114.  
  115.             case DbType.Xml: 
  116.  
  117.                 return "string"
  118.  
  119.             default
  120.  
  121.                 return "object"
  122.  
  123.         } 
  124.  
  125.     } 

4) 获取数据库类型的字段在C#中的默认值

输入DbType的类型转化后输出C#的类型的默认值。这个函数和上面那个差不多,只是有些时候设置了值后希望给个默认值而已。

  1. public string DataTypeDefaultValue(System.Data.DbType dbType) 
  2.  
  3.     { 
  4.  
  5.         switch (dbType) 
  6.  
  7.         { 
  8.  
  9.             case DbType.AnsiString: 
  10.  
  11.                 return "String.Empty"
  12.  
  13.             case DbType.AnsiStringFixedLength: 
  14.  
  15.                 return "String.Empty"
  16.  
  17.             case DbType.Binary: //Answer modified was just 0 
  18.  
  19.                 return "new byte {}"
  20.  
  21.             case DbType.Boolean: 
  22.  
  23.                 return "false"
  24.  
  25.             case DbType.Byte: //Answer modified was just 0 
  26.  
  27.                 return "(byte)0"
  28.  
  29.             case DbType.Currency: 
  30.  
  31.                 return "0"
  32.  
  33.             case DbType.Date: 
  34.  
  35.                 return "DateTime.MinValue"
  36.  
  37.             case DbType.DateTime: 
  38.  
  39.                 return "DateTime.MinValue"
  40.  
  41.             case DbType.DateTime2: 
  42.  
  43.                 return "DateTime.MinValue"
  44.  
  45.             case DbType.DateTimeOffset: 
  46.  
  47.                 return "DateTime.MinValue"
  48.  
  49.             case DbType.Decimal: 
  50.  
  51.                 return "0.0m"
  52.  
  53.             case DbType.Double: 
  54.  
  55.                 return "0.0f"
  56.  
  57.             case DbType.Guid: 
  58.  
  59.                 return "Guid.Empty"
  60.  
  61.             case DbType.Int16: 
  62.  
  63.                 return "(short)0"
  64.  
  65.             case DbType.Int32: 
  66.  
  67.                 return "(int)0"
  68.  
  69.             case DbType.Int64: 
  70.  
  71.                 return "(long)0"
  72.  
  73.             case DbType.Object: 
  74.  
  75.                 return "new object()"
  76.  
  77.             case DbType.SByte: 
  78.  
  79.                 return "(sbyte)0"
  80.  
  81.             case DbType.Single: 
  82.  
  83.                 return "0F"
  84.  
  85.             case DbType.String: 
  86.  
  87.                 return "String.Empty"
  88.  
  89.             case DbType.StringFixedLength: 
  90.  
  91.                 return "String.Empty"
  92.  
  93.             case DbType.Time: 
  94.  
  95.                 return "new DateTime(1900,1,1,0,0,0,0)"//return "DateTime.MaxValue"; 
  96.  
  97.             case DbType.UInt16: 
  98.  
  99.                 return "(ushort)0"
  100.  
  101.             case DbType.UInt32: 
  102.  
  103.                 return "(uint)0"
  104.  
  105.             case DbType.UInt64: 
  106.  
  107.                 return "(ulong)0"
  108.  
  109.             case DbType.VarNumeric: 
  110.  
  111.                 return "(decimal)0"
  112.  
  113.             case DbType.Xml: 
  114.  
  115.                 return "String.Empty"
  116.  
  117.             default
  118.  
  119.                 return "null"
  120.  
  121.         } 
  122.  
  123.     } 

5) 文件输出函数

当然了,做了这么多的工作,最后肯定是希望输出成文件咯,在前面我们已经说过了,对于输出的结果是调用Render()方法,那么我们只需要在Render()方法里面输出文件就可以了。

  1. public override void Render(TextWriter writer) 
  2.  
  3.     { 
  4.  
  5.         if (!Directory.Exists(OutputDirectory)) 
  6.  
  7.             Directory.CreateDirectory(OutputDirectory); 
  8.  
  9.         StreamWriter BaseFile = new StreamWriter(OutputFile, false); 
  10.  
  11.         base.Render(writer); 
  12.  
  13.         BaseFile.Close(); 
  14.  
  15.     } 

当然了,我们也可以再嵌入的其他模板里面调用这些输出的方法,从而达到输出多个文件的目的,这里就不再详细的写代码了。

另附上完整的B的代码:

  1. <%@ CodeTemplate ResponseEncoding="UTF-8" TargetLanguage="Text" Src="" Inherits="" Debug="False" CompilerVersion="v3.5" Description="这里是模板说明" %> 
  2.  
  3. <%@ Property Category="Context" Description="这是一个数据表" %> 
  4.  
  5.   
  6.  
  7. <%@ Assembly %> 
  8.  
  9. <%@ Import Namespace="SchemaExplorer" %> 
  10.  
  11.   
  12.  
  13. 数据表名称:<%= ThisIsTable.Name %> 
  14.  
  15.   
  16.  
  17. <% for (int c = 0; c < ThisIsTable.PrimaryKey.MemberColumns.Count; c++) { %> 
  18.  
  19. 主键<%= c %>:<%= ThisIsTable.PrimaryKey.Name %> 
  20.  
  21.     <%= ThisIsTable.PrimaryKey.Table.Name %>.<%= ThisIsTable.PrimaryKey.MemberColumns[c].Name %> 
  22.  
  23. <% } %> 
  24.  
  25.   
  26.  
  27. <% for (int c = 0; c < ThisIsTable.ForeignKeys.Count; c++) { %> 
  28.  
  29. 外键<%= c %>:<%= ThisIsTable.ForeignKeys[c].Name %> 
  30.  
  31.     外键<%= c %>对应的列 
  32.  
  33.     <% for (int i = 0; i < ThisIsTable.ForeignKeys[c].PrimaryKeyMemberColumns.Count; i++) { %> 
  34.  
  35.         <%= ThisIsTable.ForeignKeys[c].ForeignKeyTable.Name %>.<%= ThisIsTable.ForeignKeys[c].ForeignKeyMemberColumns[0].Name %> <——来自于 <%= ThisIsTable.ForeignKeys[c].PrimaryKeyTable.Name %>.<%= ThisIsTable.ForeignKeys[c].PrimaryKeyMemberColumns[0].Name %> 
  36.  
  37.     <% } %> 
  38.  
  39. <% } %> 
  40.  
  41.   
  42.  
  43. <% for (int c = 0; c < ThisIsTable.PrimaryKeys.Count; c++) { %> 
  44.  
  45. 其他表外键<%= c %>:<%= ThisIsTable.PrimaryKeys[c].Name %> 
  46.  
  47.     其他表外键<%= c %>对应的列: 
  48.  
  49.     <% for (int i = 0; i < ThisIsTable.PrimaryKeys[c].PrimaryKeyMemberColumns.Count; i++) { %> 
  50.  
  51.         <%= ThisIsTable.PrimaryKeys[c].PrimaryKeyTable.Name %>.<%= ThisIsTable.PrimaryKeys[c].PrimaryKeyMemberColumns[0].Name %> 作用于——> <%= ThisIsTable.PrimaryKeys[c].ForeignKeyTable.Name %>.<%= ThisIsTable.PrimaryKeys[c].ForeignKeyMemberColumns[0].Name %> 
  52.  
  53.     <% } %> 
  54.  
  55. <% } %> 
  56.  
  57.   
  58.  
  59. 数据表Select语句:private const String SelectString = @" 
  60.  
  61.             SELECT 
  62.  
  63.                 <% for (int c = 0; c < ThisIsTable.Columns.Count; c++) { %> 
  64.  
  65.                 [<%= ThisIsTable.Columns[c].Name %>]<% if (c < ThisIsTable.Columns.Count - 1) { %>,<% } %> 
  66.  
  67.                 <% } %> 
  68.  
  69.             FROM [<%= ThisIsTable.Name %>] WHERE 1 = 1 "; 
  70.  
  71.             
  72.  
  73. 各字段数据类型: 
  74.  
  75. <% for (int c = 0; c < ThisIsTable.Columns.Count; c++) { %> 
  76.  
  77.     //数据库类型:DbType.<%= DataType2CSharpType(ThisIsTable.Columns[c].DataType) %> 
  78.  
  79.     private <%= DataType2CSharpType(ThisIsTable.Columns[c].DataType) %> _<%= ThisIsTable.Columns[c].Name %>; 
  80.  
  81.     
  82.  
  83. <% } %> 
  84.  
  85.   
  86.  
  87. <script runat="template"
  88.  
  89. //将数据库类型转化为C#类型 
  90.  
  91. public string DataType2CSharpType(System.Data.DbType dbType) 
  92.  
  93.  
  94.     switch (dbType) 
  95.  
  96.     { 
  97.  
  98.         case DbType.AnsiString: 
  99.  
  100.             return "string"
  101.  
  102.         case DbType.AnsiStringFixedLength: 
  103.  
  104.             return "string"
  105.  
  106.         case DbType.Binary: 
  107.  
  108.             return "byte"
  109.  
  110.         case DbType.Boolean: 
  111.  
  112.             return "bool"
  113.  
  114.         case DbType.Byte: 
  115.  
  116.             return "byte"
  117.  
  118.         case DbType.Currency: 
  119.  
  120.             return "decimal"
  121.  
  122.         case DbType.Date: 
  123.  
  124.             return "DateTime"
  125.  
  126.         case DbType.DateTime: 
  127.  
  128.             return "DateTime"
  129.  
  130.         case DbType.DateTime2: 
  131.  
  132.             return "DateTime"
  133.  
  134.         case DbType.DateTimeOffset: 
  135.  
  136.             return "DateTime"
  137.  
  138.         case DbType.Decimal: 
  139.  
  140.             return "decimal"
  141.  
  142.         case DbType.Double: 
  143.  
  144.             return "double"
  145.  
  146.         case DbType.Guid: 
  147.  
  148.             return "Guid"
  149.  
  150.         case DbType.Int16: 
  151.  
  152.             return "short"
  153.  
  154.         case DbType.Int32: 
  155.  
  156.             return "int"
  157.  
  158.         case DbType.Int64: 
  159.  
  160.             return "long"
  161.  
  162.         case DbType.Object: 
  163.  
  164.             return "object"
  165.  
  166.         case DbType.SByte: 
  167.  
  168.             return "sbyte"
  169.  
  170.         case DbType.Single: 
  171.  
  172.             return "float"
  173.  
  174.         case DbType.String: 
  175.  
  176.             return "string"
  177.  
  178.         case DbType.StringFixedLength: 
  179.  
  180.             return "string"
  181.  
  182.         case DbType.Time: 
  183.  
  184.             return "TimeSpan"
  185.  
  186.         case DbType.UInt16: 
  187.  
  188.             return "ushort"
  189.  
  190.         case DbType.UInt32: 
  191.  
  192.             return "uint"
  193.  
  194.         case DbType.UInt64: 
  195.  
  196.             return "ulong"
  197.  
  198.         case DbType.VarNumeric: 
  199.  
  200.             return "decimal"
  201.  
  202.         case DbType.Xml: 
  203.  
  204.             return "string"
  205.  
  206.         default
  207.  
  208.             return "object"
  209.  
  210.     } 
  211.  
  212.  
  213. </script> 

花费了一整天的来写,希望对大家有所帮助!

  • 下一篇资讯: C#4.0的一些新特性
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师