1

因为我总是使用 db 表作为 codesmith 的源,但目前我没有表定义,只有类定义,例如:

   public class RespObj
    {
        public string Status { get; set; }
        public string Msg { get; set; }
        public object Resp { get; set; }
        public string ErrCode { get; set; }
    }

上面的代码使用c#,而不是db表,如何使用codesmith来做这件事?

4

1 回答 1

0

这是 CodeSmith 的主要用例之一。我正在用 VB 编写这个模板,但它可以用来生成任何类型的文件。Codesmith 可以使用 C#,随意将其转换为 C#,相当简单的练习

第一部分定义了一些必须引用的程序集。然后导入允许模板引用这些程序集

'SourceTable' 属性是魔法发生的地方。当您第一次编译表格时,按 F4 并出现模板属性屏幕。

单击 SourceTable 行右侧的省略号“...”并指向您的数据库和表。您将需要定义一个新的 DataSource ,这需要一个连接到您的数据库的字符串。

一个例子是

Data Source=DEVMACHINE;Initial Catalog=MyDB;Persist Security Info=True;User ID=myUserId;Password=myPassword

这会让你开始。在例程 DeclarationFromColumn 中,您需要从 SQL 服务器类型声明 ac# 类型。

对我有用的是学习一个你已经拥有的完整的工人阶级,将它粘贴到模板中,然后开始寻找你在所有领域都运行过的地方。

在每个实例中,编写一些模板代码来生成该列表。

所有功能都需要放在<Script></Script>标签中。

<%@ Template Language="VB"%>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Assembly Name="CodeSmith.BaseTemplates" %>
<%@ Assembly Name="System.Data" %>

 <%@ Import Namespace="SchemaExplorer" %>
 <%@ Import Namespace="System.Data" %>

    <%@ Property Name="SourceTable" Type="SchemaExplorer.TableSchema" Category="Context" Description="Table to get the data from." %>

<% dim i as integer %>

 public class RespObj
    {
    <% for  i = 0 to  SourceTable.Columns.Count - 1  step 1 %>
            <%= DeclarationFromColumn(SourceTable.Columns(i))  %>
    <% next %>

      } 

  <script runat="template">
    function DeclarationFromColumn(clm as ColumnSchema) as string

        return "public " & clm.NativeType & " " & clm.Name & " {get; set;}"

    end function 

    </Script>
于 2016-04-17T16:56:52.130 回答