こんなプロジェクトを作る。
DataSet を別DLLで用意する。
今回は Northwnd サンプルデータベースの Employees を利用する。
注意点は決して同時にビルドをしないように「ビルド-構成マネージャ」で設定しモデルを先にビルドしておく。
classbody.txt
namespace <#= namespacename #>
{
public class <#= table.TableName #> {
<# for (int i = 0; i < table.Columns.Count; i++) { #>
private <#= table.Columns[i].DataType.FullName #> _<#= table.Columns[i].ColumnName #> ;
public <#= table.Columns[i].DataType.FullName #> <#= table.Columns[i].ColumnName #>
{
get
{
return _<#= table.Columns[i].ColumnName #> ;
}
set
{
_<#= table.Columns[i].ColumnName #> = value ;
}
}
<# } #>
}
}
T4DataSet.tt
<#@ template language="C#v3.5" debug="true" #>
<#@ output extension="cs" encoding="utf-8" #>
<#@ assembly name="System.Xml.dll" #>
<#@ import namespace="System.Xml" #>
<#@ assembly name="System.Data.DataSetExtensions.dll" #>
<#@ import namespace="System.Data.DataSetExtensions" #>
<#@ assembly name="System.Data.dll" #>
<#@ import namespace="System.Data" #>
<#@ assembly name="C:\Users\hkodama\Documents\Visual Studio 2008\Projects\T4DbTest\T4DbModel\bin\Debug\T4DbModel.dll" #>
<#@ import namespace="T4DbModel" #>
<#@ include file="Templates/classbody.txt" #>
<#+
string namespacename = "T4DbTest";
NorthwndDataSet.EmployeesDataTable table = new NorthwndDataSet.EmployeesDataTable();
#>
T4DbModel.dll をフルパスで入れなければいけないのが難点。
また、T4DbModel.dllを使っているので同時にビルドもできない。
そうすると T4DataSet.cs にこんなソースが出来る。
MVVM の VM も簡単に作れる。
namespace T4DbTest
{
public class Employees {
private System.Int32 _EmployeeID ;
public System.Int32 EmployeeID
{
get
{
return _EmployeeID ;
}
set
{
_EmployeeID = value ;
}
}
private System.String _LastName ;
public System.String LastName
{
get
{
return _LastName ;
}
set
{
_LastName = value ;
}
}
private System.String _FirstName ;
public System.String FirstName
{
get
{
return _FirstName ;
}
set
{
_FirstName = value ;
}
}
private System.String _Title ;
public System.String Title
{
get
{
return _Title ;
}
set
{
_Title = value ;
}
}
private System.String _TitleOfCourtesy ;
public System.String TitleOfCourtesy
{
get
{
return _TitleOfCourtesy ;
}
set
{
_TitleOfCourtesy = value ;
}
}
private System.DateTime _BirthDate ;
public System.DateTime BirthDate
{
get
{
return _BirthDate ;
}
set
{
_BirthDate = value ;
}
}
private System.DateTime _HireDate ;
public System.DateTime HireDate
{
get
{
return _HireDate ;
}
set
{
_HireDate = value ;
}
}
private System.String _Address ;
public System.String Address
{
get
{
return _Address ;
}
set
{
_Address = value ;
}
}
private System.String _City ;
public System.String City
{
get
{
return _City ;
}
set
{
_City = value ;
}
}
private System.String _Region ;
public System.String Region
{
get
{
return _Region ;
}
set
{
_Region = value ;
}
}
private System.String _PostalCode ;
public System.String PostalCode
{
get
{
return _PostalCode ;
}
set
{
_PostalCode = value ;
}
}
private System.String _Country ;
public System.String Country
{
get
{
return _Country ;
}
set
{
_Country = value ;
}
}
private System.String _HomePhone ;
public System.String HomePhone
{
get
{
return _HomePhone ;
}
set
{
_HomePhone = value ;
}
}
private System.String _Extension ;
public System.String Extension
{
get
{
return _Extension ;
}
set
{
_Extension = value ;
}
}
private System.Byte[] _Photo ;
public System.Byte[] Photo
{
get
{
return _Photo ;
}
set
{
_Photo = value ;
}
}
private System.String _Notes ;
public System.String Notes
{
get
{
return _Notes ;
}
set
{
_Notes = value ;
}
}
private System.Int32 _ReportsTo ;
public System.Int32 ReportsTo
{
get
{
return _ReportsTo ;
}
set
{
_ReportsTo = value ;
}
}
private System.String _PhotoPath ;
public System.String PhotoPath
{
get
{
return _PhotoPath ;
}
set
{
_PhotoPath = value ;
}
}
}
}