使用T4為資料庫自動生成實體類(C )

2022-02-23 07:28:17 字數 3471 閱讀 9833

t4 (text template transformation toolkit

) 是乙個基於模板的**生成器。使用

t4你可以通過寫一些

asp.net-like

模板,來生成

c#, t-sql, xml

等**。一「

hello world

」**生成器

1 建立乙個

c# console

工程,新增乙個名為「

helloworld.tt」

的文字檔案。

如果你正在使用

visual studio 2005

你需要安裝

dsl tools

2 向helloworld.tt中新增以下內容

template

language

="c#

" #>

// // this code was generated by a tool. any changes made manually will be lost

// the next time this code is regenerated.

// using

system;  

public

class

this

.classname #>

}上面的模板將生成乙個名為「helloworld」的類,當你儲存helloworld.tt時,visual studio將為你生成以下**:

code

////

this code was generated by a tool. any changes made manually will be lost

//the next time this code is regenerated.

//using

system;   

public

class

helloworld

}3 新增另乙個文字檔案helloworld1.tt.,加入以下內容:

this

.classname =

"helloworld1"

;#>

include

file

="hellot4.tt

" #>

通過修改classname的值可以更改類名,以上模板將生成乙個名為helloworld1類。

code

////

this code was generated by a tool. any changes made manually will be lost

//the next time this code is regenerated.

//using

system;   

public

class

helloworld1

}二 資料庫自動生成實體類

這個例項會建立乙個模板為資料庫中的每一張表,自動建立相應的實體類。

1 首先我們需要新增一些程式集引用,命名空間。

template

language

="c#

" debug

="true

" hostspecific

="true

" #>

output

extension

=".cs

" #>

assembly

name

="system.data

" #>

assembly

name

="system.xml

" #>

import

namespace

="system.collections.generic

" #>

import

namespace

="system.data.sqlclient

" #>

import

namespace

="system.data

" #>

2 獲取資料庫表結構

. string

connectionstring =

"data source=.""sqlexpress;integrated security=sspi;initial catalog=miaportal;"

; sqlconnection conn =

newsqlconnection(connectionstring);

conn.open();

system.data.datatable schema = conn.getschema(

"tables"

); string

selectquery =

"select * from @tablename"

; sqlcommand command =

newsqlcommand(selectquery,conn);

sqldataadapter ad =

newsqldataadapter(command);

system.data.dataset ds =

newdataset();

我們通過getschema("tables")獲取了資料庫中所有表的表名,接著通過表名,獲取相應表的表結構。

3 生成**

template

language

="c#

" debug

="true

" hostspecific

="true

" #>

output

extension

=".cs

" #>

assembly

name

="system.data

" #>

assembly

name

="system.xml

" #>

import

namespace

="system.collections.generic

" #>

import

namespace

="system.data.sqlclient

" #>

import

namespace

="system.data

" #>

using

system;

namespace

myproject.entities

set}                 

}             

} #>

}引用:

code generation using t4 templates ---

使用T4模板為EF框架新增資料庫實體注釋

新建getsummery.ttinclude assembly name system.core assembly name system.data import namespace system.data.sqlclient string constr data source 127.0.0.1 ...

C 根據資料庫自動生成實體類(工具二)

獲取所有的資料庫名 private static string getalldatasql select name from master.dbo.sysdatabases order by name 獲取所有的表名 private static string getalltablesql sele...

實體類自動賦值並解析為json資料

在前後端分離的框架中,當我們開發後台介面儲存資料時,需要組裝json資料來做測試。在準備測試資料時,需要將物件的屬性乙個個複製出來並賦值,太麻煩!於是乎,我做了個將實體類自動賦值並解析為json資料。如下 public class genjsontest public static void mai...