1

コードスミスのソースとして常にdbテーブルを使用しているため、現在、テーブル定義はなく、クラス定義のみです。例:

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

上記のコードでは、db テーブルではなく c# を使用していますが、codesmith を使用してこのことを行うにはどうすればよいですか?

4

1 に答える 1

0

これは、CodeSmith の主なユース ケースの 1 つです。この TEMPLATE は VB で作成していますが、あらゆる種類のファイルの生成に使用できます。Codesmith は C# を使用できます。自由にこれを C# に変換してください。かなり単純な演習です。

最初の部分は、参照する必要があるいくつかのアセンブリを定義します。次に、インポートにより、テンプレートがそれらのアセンブリを参照できるようになります

プロパティ「SourceTable」は、魔法が起こる場所です。初めてテーブルをコンパイルするとき、F4 を押すと、テンプレートのプロパティ画面が表示されます。

SourceTable 行の右側にある省略記号「...」をクリックし、DB とテーブルをポイントします。新しい 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 に答える