因为我总是使用db table作为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来做这件事?
答案 0 :(得分:0)
这是CodeSmith的主要用例之一。 我在VB中编写此TEMPLATE,但它可用于生成任何类型的文件。 Codesmith可以使用C#,随意将其转换为C#,相当直接的练习
第一部分定义了必须引用的一些程序集。 然后,Imports允许模板引用那些程序集
属性'SourceTable'是魔术发生的地方。第一次编译表时,点击F4,将出现模板属性屏幕。
单击SourceTable行右侧的elipses'...'并指向您的数据库和表格。 您需要定义一个新的DataSource,这需要一个连接数据库的字符串。
一个例子是
Data Source=DEVMACHINE;Initial Catalog=MyDB;Persist Security Info=True;User ID=myUserId;Password=myPassword
这将帮助您入门。在例程DeclarationFromColumn中,您将要从SQL服务器类型声明一个c#类型。
对我有用的是拿一个你已经拥有的完整的工作班,将其粘贴到模板中,然后开始寻找贯穿所有领域的地方。
在每个实例中,编写一些模板代码来生成该列表。
所有功能都需要放在<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>