📄 table_collection_base.atcs
字号:
<#@ Imports
using System;
using System.Text;
using TwoLKit.nTierBuilder.Api.DbDom;
##>
<#@ InstanceMembers
private ITable Table
{
get { return (ITable)Environment["Table"]; }
}
public override string RelativeFilePath
{
get { return GetClassName() + ".vb"; }
}
private string GetClassName()
{
return GetTableClassName(Table) + "_Base";
}
private string GetTableClassName(ITable table)
{
return table.CodeName + "Collection";
}
private string GetTableView()
{
return Table.View ? "view" : "table";
}
private string GetRowClassName(ITable table)
{
return table.CodeName + "Row";
}
private string GetDbClassName()
{
return Table.Database.CodeName;
}
private bool ShouldGenerateNullableProperty(IColumn column)
{
return column.Nullable && SharedUtils.ToDotNetType(column.OleDbType).IsValueType;
}
private string GetColumnFieldName(IColumn column)
{
return SharedUtils.GetFieldName(column.CodeName);
}
private string GetColumnIndexVariableName(IColumn column)
{
return GetParameterName(column) + "ColumnIndex";
}
private string GetConvertReaderMethodName(IColumn column)
{
Type dotNetType = SharedUtils.ToDotNetType(column.OleDbType);
if(!column.Nullable)
throw new ArgumentException();
if(dotNetType == typeof(string) || dotNetType == typeof(char[]))
return "ReaderValueToString";
if(dotNetType == typeof(byte[]))
return "ReaderValueToByteArray";
return "ReaderValueToObject";
}
private string GetSqlParameterName(IColumn column)
{
return SharedUtils.GetParameterName(column.CodeName);
}
private string GetPropertyName(IColumn column)
{
return SharedUtils.GetPropertyName(column.CodeName);
}
private Type GetDotNetType(IColumn column)
{
return SharedUtils.GetDotNetType(column, false);
}
private string GetDotNetTypeName(IColumn column)
{
return SharedUtils.GetCSharpTypeName(GetDotNetType(column));
}
private void WritePrimaryKeyParameterList(bool writeType, string rowObjName)
{
bool firstItem = true;
foreach(IColumn column in Table.Columns.GetPrimaryColumns())
{
if(firstItem)
firstItem = false;
else
Writer.Write(", ");
if(writeType)
{
Writer.Write(GetParameterName(column));
Writer.Write(" As ");
Writer.Write(GetDotNetTypeName(column));
}
else
{
Writer.Write(rowObjName);
Writer.Write('.');
Writer.Write(GetPropertyName(column));
}
}
}
private string GetParameterName(IColumn column)
{
return SharedUtils.GetParameterName(column.CodeName);
}
private string GetSqlName(string name)
{
return "[" + name + "]";
}
private bool GenerateMSSqlStoredProcedures
{
get { return SharedUtils.GetGenerateMSSqlStoredProcedures(Table.Database); }
}
private string GetNamespace()
{
return SharedUtils.GetDbTierNamespace(Table.Database);
}
##>
' <fileinfo name="<#= RelativeFilePath #>">
' <copyright owner="<#= Environment["CopyrightOwner"] #>">
' All Rights Reserved.
' </copyright>
' <remarks>
' Do not change this source code manually. Changes to this file may
' cause incorrect behavior and will be lost if the code is regenerated.
' </remarks>
' <generator rewritefile="<#= RewriteExistingFile #>" infourl="http://www.2LKit.com">2LKit nTier Builder</generator>
' <created><#= DateTime.Now.ToString("f") #></created>
' </fileinfo>
Option Strict Off
Option Explicit On
Imports System
Imports System.Data
'' <summary>
'' Provides methods for common <#= GetTableView() #> operations. Do not change this
'' source code. Update the <#= GetTableClassName(Table) #> class if you need
'' to add or change some functionality.
'' </summary>
Public MustInherit Class <#= GetClassName() #>
Private _db As <#= GetDbClassName() #>
'' <summary>
'' Initializes a new instance of the '<#= GetClassName() #>' class.
'' </summary>
'' <param name="db">The <#= GetDbClassName() #> object.</param>
Public Sub New(db As <#= GetDbClassName() #>)
_db = db
End Sub
'' <summary>
'' Gets an array of all '<#= Table.Name #>' records.
'' </summary>
'' <returns>An array of <#= GetRowClassName(Table) #> objects.</returns>
Public Overridable Function GetAll() As <#= GetRowClassName(Table) #>()
Dim cmd As IDbCommand = _db.CreateCommand(<#
if(GenerateMSSqlStoredProcedures)
{ ##>
"<#= Database_StoredProcedures_MSSQL.GetGetAllProcName(Table) #>", true<#
}
else
{ ##>
"SELECT * FROM <#= GetSqlName(Table.Name) #>"<#
} #>)
Dim reader As IDataReader = cmd.ExecuteReader()
Try
Return MapRecords(reader)
Finally
reader.Close()
End Try
End Function
<# if(0 == Table.Columns.GetPrimaryColumns().Length)
{
if(!Table.View)
Environment.AddWarning("The '" + Table.Name + "' table does not have a primary key.");
}
else
{
// Generate only if table/view has primary key
##>
'' <summary>
'' Gets a '<#= GetRowClassName(Table) #>' object by the primary key.
'' </summary>
<# foreach(IColumn column in Table.Columns.GetPrimaryColumns())
{ ##>
'' <param name="<#= GetParameterName(column) #>">The '<#= column.Name #>' column value.</param>
<# } ##>
'' <returns>A <#= GetRowClassName(Table) #> object or null if the object was not found.</returns>
Public Overridable Function GetByPrimaryKey(<# WritePrimaryKeyParameterList(true, null); #>) As <#= GetRowClassName(Table) #>
<# if(GenerateMSSqlStoredProcedures)
{ ##>
Dim cmd As IDbCommand = _db.CreateCommand("<#=
Database_StoredProcedures_MSSQL.GetGetByKeyProcName(Table) #>", True)
<# }
else
{ ##>
Dim sqlStr As String = "SELECT * FROM <#= GetSqlName(Table.Name) #> WHERE " + _
<#
bool getByKeyFirstItem = true;
foreach(IColumn column in Table.Columns.GetPrimaryColumns())
{
if(getByKeyFirstItem)
getByKeyFirstItem = false;
else
{ ##> + " AND " + _
<# } ##>
"<#= GetSqlName(column.Name) #>=" + _db.CreateSqlParameterName("<#=
GetSqlParameterName(column) #>")<#
} #>
Dim cmd As IDbCommand = _db.CreateCommand(sqlStr)
<# } ##>
<# foreach(IColumn column in Table.Columns.GetPrimaryColumns())
{ ##>
_db.AddParameter(cmd, "<#= GetSqlParameterName(column) #>", DbType.<#= column.DbType.ToString() #>, <#= GetParameterName(column) #>)
<# } ##>
Dim reader As IDataReader = cmd.ExecuteReader()
Try
Dim tempArray As <#= GetRowClassName(Table) #>() = MapRecords(reader)
If 0 = tempArray.Length Then
Return Nothing
End If
Return tempArray(0)
Finally
reader.Close()
End Try
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -