我是用CodeSmith4.0(网上下的,没注册号)做实体模板Entity.cst 输入代码后,不见codesmith的属性窗口中出现数据库和表的选择,我的数据库在codesmith中已连接上了。下面贴出代码,看看怎么办?(数据库名:ANJZ)
<%@ CodeTemplate Leanguage="VB"> TargetLanguage="Text" Src="" Inherits=""
Debug="False" Description="This is Entity Class" %>
<%@ Assembly Name="System.Data" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Design" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Design" %><%@ Property Name="CurDB" Type="SchemaExplorer.DatabaseSchema" Category="Context" Description="" %>
<%@ Property Name="CurTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="" %>
<%@ Property Name="MakeLanguage" Type="ML" Default="2" Optional="False" Category="Other" Description="" %>
<%@ Property Name="NameSpaces" Type="String" Default="ANJZ" Category="Other" Description="" %><%------------------------------判断模板语言----------------------------------------------%>
<% If MakeLanguage = ML.CSharp Then %>
using System;
using System.Data;namespace <%=NameSpaces%>.EntityModel
{
[Serializable()]
public <%= CurTable.Name %>Entity
{
public class <%=CurTable.Name %>Entity()
{
//TODO:
}
}
}
<% End If %>
<%------------------------------开始模板--------------------------------------------------%><script runat="template">
#region "Normal" public Enum ML
VB = 0
CSharp = 2
End Enum
public Function GetMakeCode(ByVal MakeLang As ML) As String
If MakeLang = ML.CSHARP Then
Return GetCSCode()
End if
End Function#end region Private Function FirstToLower(ByVal Str As String) As String
Dim S As String
S = Str.Substring(0,1).ToLower & Str.Substring(1)
Return s
End Function Public Function GetVBCode() As String
Dim Field As ColumnSchema : Dim SB As New System.Text.StringBuilder(100)
Dim ColumnName As String : Dim ColumnType As String
Dim FL As String For Each Field In CurTable.Columns
ColumnName = Field.Name
ColumnType = GetColumnDataType(ML.VB,Field)
FL = FirstToLower(ColumnName) SB.Append(vbTab & "Private _" & FL & " As " & ColumnType &
GetDefaultValue(ColumnType) & vbCrLf)
SB.Append(vbTab & "<ColumnName()> Public Property" & ColumnName & "()
As " & ColumnType & vbCrLf)
SB.Append(vbTab & vbTab & "Get" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "Return_" & FL & vbCrLf)
SB.Append(vbTab & vbTab & "End Get" & vbCrLf)
SB.Append(vbTab & vbTab & "Set(ByVal Value As " & ColumnType &")" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "_" & FL & " = Value" & vbCrLf)
SB.Append(vbTab & vbTab & "End Set" & vbCrLf)
SB.Append(vbTab & "End Property" & vbCrLf & vbCrLf)
Next Return SB.ToString End Function Public Function GetCSCode() As String
Dim Field As ColumnSchema : Dim SB As New System.Text.StringBuilder(100)
Dim ColumnName As String : Dim ColumnType As String For Each Field In CurTable.Columns
ColumnName = Field.Name
ColumnType = GetColumnDataType(ML.CSharp,Field) SB.Append(vbTab & vbTab & "Private" & ColumnType & " _ " & ColumnName
& GetDefaultValue(ColumnType) & vbCrLf)
SB.Append(vbTab & vbTab & "Public " & ColumnType & "" & ColumnName
& vbCrLf)
SB.Append(vbTab & vbTab & "{" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "get" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "{" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & vbTab & "return _" & ColumnName & ";" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & ")" & FL & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "Set" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "{" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & vbTab & "_" & ColumnName & " = value " & ";" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & ")" & vbCrLf)
SB.Append(vbTab & vbTab & "}" & vbCrLf & vbCrLf)
Next Return SB.ToString End Function Public Function GetDefaultValue(ByVal ColumnType As String) As String
Select Case ColumnType
Case "Integer","Double"
Return "=0 "
Case "int","double"
Return "=0; "
Case "String"
Return "= """""
Case "string"
Return "= """";"
Case "DataTime"
If MakeLanguage=ML.VB Then
Return "System.DateTime.Now "
Else
Return "System.DataTime.Now;"
End If
Case "Boolean"
Return "=False "
Case "bool"
Return "=false; "
Case Else
If MakeLanguage=ML.VB Then
Return "=now " & ColumnType
Else
Return "=now " & ColumnType & ";"
End If
End Select
End Function Public Function GetColumnDataType(ByVal MakeLang As ML, ByVal ColumnField As
SchemaExplorer.ColumnSchema) As String
Select Case ColumnField.NativeType.ToLower
Case "int", "tinyint", "smallint", "bigint"
If MakeLanguage=ML.VB Then
Return "Integer"
ElseIf MakeLang = ML.CSharp Then
Return "int"
End If
Case "decimal", "float", "money", "numeric", "smallmoney"
If MakeLanguage=ML.VB Then
Return "Double"
ElseIf MakeLang = ML.CSharp Then
Return "double"
End If
Case "char", "nchar", "ntext", "text", "varchar", "nvarchar"
If MakeLanguage=ML.VB Then
Return "String"
ElseIf MakeLang = ML.CSharp Then
Return "string"
End If
Case "smalldatetime", "timestamp", "datetime"
Return "DataTime"
Case "bit"
If MakeLanguage=ML.VB Then
Return "Boolean"
ElseIf MakeLang = ML.CSharp Then
Return "bool"
End If
Case "binary", "image", "varbinary"
If MakeLanguage=ML.VB Then
Return "Byte()"
ElseIf MakeLang = ML.CSharp Then
Return "byte()"
End If
End Select
End Function</script>
<%@ CodeTemplate Leanguage="VB"> TargetLanguage="Text" Src="" Inherits=""
Debug="False" Description="This is Entity Class" %>
<%@ Assembly Name="System.Data" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="System.Design" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="SchemaExplorer" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Design" %><%@ Property Name="CurDB" Type="SchemaExplorer.DatabaseSchema" Category="Context" Description="" %>
<%@ Property Name="CurTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="" %>
<%@ Property Name="MakeLanguage" Type="ML" Default="2" Optional="False" Category="Other" Description="" %>
<%@ Property Name="NameSpaces" Type="String" Default="ANJZ" Category="Other" Description="" %><%------------------------------判断模板语言----------------------------------------------%>
<% If MakeLanguage = ML.CSharp Then %>
using System;
using System.Data;namespace <%=NameSpaces%>.EntityModel
{
[Serializable()]
public <%= CurTable.Name %>Entity
{
public class <%=CurTable.Name %>Entity()
{
//TODO:
}
}
}
<% End If %>
<%------------------------------开始模板--------------------------------------------------%><script runat="template">
#region "Normal" public Enum ML
VB = 0
CSharp = 2
End Enum
public Function GetMakeCode(ByVal MakeLang As ML) As String
If MakeLang = ML.CSHARP Then
Return GetCSCode()
End if
End Function#end region Private Function FirstToLower(ByVal Str As String) As String
Dim S As String
S = Str.Substring(0,1).ToLower & Str.Substring(1)
Return s
End Function Public Function GetVBCode() As String
Dim Field As ColumnSchema : Dim SB As New System.Text.StringBuilder(100)
Dim ColumnName As String : Dim ColumnType As String
Dim FL As String For Each Field In CurTable.Columns
ColumnName = Field.Name
ColumnType = GetColumnDataType(ML.VB,Field)
FL = FirstToLower(ColumnName) SB.Append(vbTab & "Private _" & FL & " As " & ColumnType &
GetDefaultValue(ColumnType) & vbCrLf)
SB.Append(vbTab & "<ColumnName()> Public Property" & ColumnName & "()
As " & ColumnType & vbCrLf)
SB.Append(vbTab & vbTab & "Get" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "Return_" & FL & vbCrLf)
SB.Append(vbTab & vbTab & "End Get" & vbCrLf)
SB.Append(vbTab & vbTab & "Set(ByVal Value As " & ColumnType &")" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "_" & FL & " = Value" & vbCrLf)
SB.Append(vbTab & vbTab & "End Set" & vbCrLf)
SB.Append(vbTab & "End Property" & vbCrLf & vbCrLf)
Next Return SB.ToString End Function Public Function GetCSCode() As String
Dim Field As ColumnSchema : Dim SB As New System.Text.StringBuilder(100)
Dim ColumnName As String : Dim ColumnType As String For Each Field In CurTable.Columns
ColumnName = Field.Name
ColumnType = GetColumnDataType(ML.CSharp,Field) SB.Append(vbTab & vbTab & "Private" & ColumnType & " _ " & ColumnName
& GetDefaultValue(ColumnType) & vbCrLf)
SB.Append(vbTab & vbTab & "Public " & ColumnType & "" & ColumnName
& vbCrLf)
SB.Append(vbTab & vbTab & "{" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "get" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "{" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & vbTab & "return _" & ColumnName & ";" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & ")" & FL & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "Set" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & "{" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & vbTab & "_" & ColumnName & " = value " & ";" & vbCrLf)
SB.Append(vbTab & vbTab & vbTab & ")" & vbCrLf)
SB.Append(vbTab & vbTab & "}" & vbCrLf & vbCrLf)
Next Return SB.ToString End Function Public Function GetDefaultValue(ByVal ColumnType As String) As String
Select Case ColumnType
Case "Integer","Double"
Return "=0 "
Case "int","double"
Return "=0; "
Case "String"
Return "= """""
Case "string"
Return "= """";"
Case "DataTime"
If MakeLanguage=ML.VB Then
Return "System.DateTime.Now "
Else
Return "System.DataTime.Now;"
End If
Case "Boolean"
Return "=False "
Case "bool"
Return "=false; "
Case Else
If MakeLanguage=ML.VB Then
Return "=now " & ColumnType
Else
Return "=now " & ColumnType & ";"
End If
End Select
End Function Public Function GetColumnDataType(ByVal MakeLang As ML, ByVal ColumnField As
SchemaExplorer.ColumnSchema) As String
Select Case ColumnField.NativeType.ToLower
Case "int", "tinyint", "smallint", "bigint"
If MakeLanguage=ML.VB Then
Return "Integer"
ElseIf MakeLang = ML.CSharp Then
Return "int"
End If
Case "decimal", "float", "money", "numeric", "smallmoney"
If MakeLanguage=ML.VB Then
Return "Double"
ElseIf MakeLang = ML.CSharp Then
Return "double"
End If
Case "char", "nchar", "ntext", "text", "varchar", "nvarchar"
If MakeLanguage=ML.VB Then
Return "String"
ElseIf MakeLang = ML.CSharp Then
Return "string"
End If
Case "smalldatetime", "timestamp", "datetime"
Return "DataTime"
Case "bit"
If MakeLanguage=ML.VB Then
Return "Boolean"
ElseIf MakeLang = ML.CSharp Then
Return "bool"
End If
Case "binary", "image", "varbinary"
If MakeLanguage=ML.VB Then
Return "Byte()"
ElseIf MakeLang = ML.CSharp Then
Return "byte()"
End If
End Select
End Function</script>
解决方案 »
- 我用datetime的ticks取得的时间刻度,尾数7位全是零啊,麻烦看一下段代码。
- 在DLL中如何得到DLL自身所在的目录?
- 【条形码】求IDAutomation注册版或者code-128 draw的方法
- 请问对于Page中托放进去的控件和动态加入的有何区别
- DataGrid点击某行,将行里面的第一和第二列值写入当文本框,用javascript在前台实现。
- 我对自定义控件中的,自定义事件看了很多遍都不了解!哪位仁兄对此非常清楚,发表见解!
- System.Net.HttpWebRequest.GetResponse处理判断后为空白页面
- 请教各位高人(nbear)好用吗?有用的人进来报道一下
- 如何可以使ASP.NET服务器端控件在接受到回车事件时自动将控件焦点转移到下一个控件上
- Unity依赖注入,报错没有为该对象定义无参数的构造函数。
- visio与.NET2005?
- 请问类似网上银行的密码输入框的Activex控件(不能直接填写,需要先点一下输入框)如何实现?
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(3,0): error CODESMITH0007: Assembly directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(3,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(4,0): error CODESMITH0007: Assembly directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(4,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(5,0): error CODESMITH0007: Assembly directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(5,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(6,0): error CODESMITH0007: Import directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(6,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(7,0): error CODESMITH0007: Import directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(7,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(8,0): error CODESMITH0007: Import directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(8,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(9,0): error CODESMITH0007: Import directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(9,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(11,0): error CODESMITH0007: Property directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(11,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(12,0): error CODESMITH0007: Property directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(12,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(13,0): error CODESMITH0007: Property directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(13,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(14,0): error CODESMITH0007: Property directive can not appear after content.
C:\Documents and Settings\Administrator\My Documents\CodeSmith\Samples\v4.0\Templates\DatabaseSchema\Entity.cst(14,0): error CODESMITH0012: CodeTemplate directive must appear before this directive.Build complete -- 22 errors, 0 warnings
error CODESMITH0007: Assembly directive can not appear after content.
error CODESMITH0012: CodeTemplate directive must appear before this directive.是不是CodeSmith是30天试用的,不能build啊?
private string _outputDirectory;
private bool _implementNotification = true; private CodeTemplate _csharpTemplate;
private CodeTemplate _mappingTemplate; [Category("Database")]
[Description("Database that the mapping file should be based on.")]
public DatabaseSchema SourceDatabase {
get { return _sourceDatabase; }
set { _sourceDatabase = value; }
} [Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
[Category("Class")]
[Description("The folder to save the generated class files.")]
public string OutputDirectory
{
get {return _outputDirectory;}
set {_outputDirectory= value;}
}
我只是觉得codesmith的属性窗口中不能设数据库和表
CurDB和CurTable没有出来
<%@ CodeTemplate Leanguage= "VB "> TargetLanguage= "Text " Src= " " Inherits= " "
Debug= "False " Description= "This is Entity Class " %>