我是用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>

解决方案 »

  1.   

    这是Build以后的出错信息:
    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
      

  2.   

    出错的简单的就是:
     error CODESMITH0007: Assembly directive can not appear after content.
     error CODESMITH0012: CodeTemplate directive must appear before this directive.是不是CodeSmith是30天试用的,不能build啊?
      

  3.   

    private DatabaseSchema _sourceDatabase;
    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;}
    }
      

  4.   

    小可飞刀:你的代码我肯定是不懂,
    我只是觉得codesmith的属性窗口中不能设数据库和表
    CurDB和CurTable没有出来
      

  5.   

    是不是codesmith没有注册不给build啊,要么是这个原因了。
      

  6.   

    今天也碰到。不过解决了。先把那个entity关了,然后再打开就有了。
      

  7.   

    这是什么?
    <%@   CodeTemplate   Leanguage= "VB ">   TargetLanguage= "Text "   Src= " "   Inherits= " " 
    Debug= "False "   Description= "This   is   Entity   Class "   %>