2。DAL层模板
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;
using System.Data;
using <xsl:value-of select="TabelModel/NameSpacePri"/>Model;
namespace <xsl:value-of select="TabelModel/NameSpacePri"/>DAL
{
public partial class <xsl:value-of select="TabelModel/ModelName"/>DAL
{
#region 属性/构造函数
/// <summary>
/// 默认构造函数
///</summary>
public <xsl:value-of select="TabelModel/ModelName"/>DAL()
{
}
#endregion
#region 数据检测
<xsl:if test="TabelModel/HasPK = 'true'">
/// <summary>
/// 是否存在指定主键的数据
///</summary>
<xsl:for-each select="TabelModel/Fields/FieldModel[IsPK = 'true']">
/// <param><xsl:attribute name="name"><xsl:value-of select="VarName"/></xsl:attribute>指定<xsl:value-of select="Mark"/></param>
</xsl:for-each>
/// <returns>True/False</returns>
public bool ExistsWithPK(<xsl:value-of select="TabelModel/Fields/FieldModel[IsPK = 'true'][1]/VarType"/><xsl:text> </xsl:text><xsl:value-of select="TabelModel/Fields/FieldModel[IsPK = 'true'][1]/VarName"/><xsl:for-each select="TabelModel/Fields/FieldModel[IsPK = 'true'][position()>1]">, <xsl:value-of select="VarType"/><xsl:text> </xsl:text><xsl:value-of select="VarName"/></xsl:for-each>)
{
using (SQLHelper DbEngine = new SQLHelper())
{
return ExistsWithPK(DbEngine<xsl:for-each select="TabelModel/Fields/FieldModel[IsPK = 'true']">, <xsl:value-of select="VarName"/></xsl:for-each>);
}
}
/// <summary>
/// 是否存在指定主键的数据
///</summary>
/// <param name="DbEngine">指定数据库引擎</param>
<xsl:for-each select="TabelModel/Fields/FieldModel[IsPK = 'true']">
/// <param>
<xsl:attribute name="name">
<xsl:value-of select="VarName"/>
</xsl:attribute><xsl:value-of select="Mark"/></param>
</xsl:for-each>
/// <returns>True/False</returns>
internal bool ExistsWithPK(SQLHelper DbEngine<xsl:for-each select="TabelModel/Fields/FieldModel[IsPK = 'true']">, <xsl:value-of select="VarType"/><xsl:text> </xsl:text><xsl:value-of select="VarName"/></xsl:for-each>)
{
StringBuilder strSQL = new StringBuilder();
strSQL.Append(" SELECT COUNT(1) FROM <xsl:value-of select="TabelModel/TableName"/> ");
strSQL.Append(" WHERE <xsl:value-of select="TabelModel/Fields/FieldModel[IsPK = 'true'][1]/DbFieldName"/> = @<xsl:value-of select="TabelModel/Fields/FieldModel[IsPK = 'true'][1]/DbFieldName"/> ");
<xsl:for-each select="TabelModel/Fields/FieldModel[IsPK = 'true'][position()>1]">
strSQL.Append(" AND <xsl:value-of select="DbFieldName"/> = @<xsl:value-of select="DbFieldName"/> ");
</xsl:for-each>
SqlParameter[] parameters =
{
new SqlParameter("@<xsl:value-of select="TabelModel/Fields/FieldModel[IsPK = 'true'][1]/DbFieldName"/>", <xsl:value-of select="TabelModel/Fields/FieldModel[IsPK = 'true'][1]/SqlParamType"/>, <xsl:value-of select="TabelModel/Fields/FieldModel[IsPK = 'true'][1]/Length"/>)
<xsl:for-each select="TabelModel/Fields/FieldModel[IsPK = 'true'][position()>1]">
,new SqlParameter("@<xsl:value-of select="DbFieldName"/>", <xsl:value-of select="SqlParamType"/>, <xsl:value-of select="Length"/>)
</xsl:for-each>
};
<xsl:for-each select="TabelModel/Fields/FieldModel[IsPK = 'true']">
parameters[<xsl:value-of select="position()-1"/>].Value = <xsl:value-of select="VarName"/>;
</xsl:for-each>
return DbEngine.Exists(strSQL.ToString(), parameters);
}
</xsl:if>
<xsl:if test="TabelModel/HasLogicKey = 'true'">
/// <summary>
/// 是否存在指定逻辑主键的数据
/// </summary>
<xsl:for-each select="TabelModel/Fields/FieldModel[IsLogicKey = 'true']">
/// <param><xsl:attribute name="name"><xsl:value-of select="VarName"/></xsl:attribute><xsl:value-of select="Mark"/></param>
</xsl:for-each>
/// <returns>True/False</returns>
public bool ExistsWithLogicKey(<xsl:value-of select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][1]/VarType"/><xsl:text> </xsl:text><xsl:value-of select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][1]/VarName"/><xsl:for-each select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][position()>1]">, <xsl:value-of select="VarType"/><xsl:text> </xsl:text><xsl:value-of select="VarName"/></xsl:for-each>)
{
using (SQLHelper DbEngine = new SQLHelper())
{
return ExistsWithLogicKey(DbEngine<xsl:for-each select="TabelModel/Fields/FieldModel[IsLogicKey = 'true']">, <xsl:value-of select="VarName"/></xsl:for-each>);
}
}
/// <summary>
/// 是否存在指定逻辑主键的数据
/// </summary>
/// <param name="DbEngine">指定数据库引擎</param>
<xsl:for-each select="TabelModel/Fields/FieldModel[IsLogicKey = 'true']">
/// <param><xsl:attribute name="name"><xsl:value-of select="VarName"/></xsl:attribute><xsl:value-of select="Mark"/></param>
</xsl:for-each>
/// <returns>True/False</returns>
internal bool ExistsWithLogicKey(SQLHelper DbEngine<xsl:for-each select="TabelModel/Fields/FieldModel[IsLogicKey = 'true']">, <xsl:value-of select="VarType"/><xsl:text> </xsl:text><xsl:value-of select="VarName"/></xsl:for-each>)
{
StringBuilder strSQL = new StringBuilder();
strSQL.Append(" SELECT COUNT(1) FROM <xsl:value-of select="TabelModel/TableName"/> ");
strSQL.Append(" WHERE <xsl:value-of select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][1]/DbFieldName"/> = @<xsl:value-of select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][1]/DbFieldName"/> ");
<xsl:for-each select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][position()>1]">
strSQL.Append(" AND <xsl:value-of select="DbFieldName"/> = @<xsl:value-of select="DbFieldName"/> ");
</xsl:for-each>
SqlParameter[] parameters =
{
new SqlParameter("@<xsl:value-of select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][1]/DbFieldName"/>", <xsl:value-of select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][1]/SqlParamType"/>, <xsl:value-of select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][1]/Length"/>)
<xsl:for-each select="TabelModel/Fields/FieldModel[IsLogicKey = 'true'][position()>1]">
,new SqlParameter("@<xsl:value-of select="DbFieldName"/>", <xsl:value-of select="SqlParamType"/>, <xsl:value-of select="Length"/>)
</xsl:for-each>
};
<xsl:for-each select="TabelModel/Fields/FieldModel[IsLogicKey = 'true']">
parameters[<xsl:value-of select="position()-1"/>].Value = <xsl:value-of select="VarName"/>;
</xsl:for-each>
return DbEngine.Exists(strSQL.ToString(), parameters);
}
</xsl:if>
/// <summary>
/// 是否存在满足指定条件的数据
///</summary>
/// <param name="strWhere">条件(不包含“Where”关键字)</param>
/// <returns>True/False</returns>
public bool ExistsWithParam(string strWhere)
{
using (SQLHelper DbEngine = new SQLHelper())
{
return ExistsWithParam(DbEngine, strWhere);
}
}
/// <summary>
/// 是否存在满足指定条件的数据
///</summary>
/// <param name="DbEngine">指定数据库引擎</param>
/// <param name="strWhere">条件(不包含“Where”关键字)</param>
/// <returns>True/False</returns>
internal bool ExistsWithParam(SQLHelper DbEngine, string strWhere)
{
StringBuilder strSQL = new StringBuilder();
strSQL.Append("SELECT COUNT(1) FROM <xsl:value-of select="TabelModel/TableName"/> ");
if (strWhere.Length <xsl:text disable-output-escaping="yes">></xsl:text> 0)
{
strSQL.Append(" WHERE " + strWhere);
}
return DbEngine.Exists(strSQL.ToString());
}
#endregion
#region 数据检索
/// <summary>
/// 根据DataTable填充数据实体列表
/// </summary>
/// <param name="dt">DataTable数据</param>
/// <returns>数据实体列表</returns>
private List <xsl:text disable-output-escaping="yes"><</xsl:text><xsl:value-of select="TabelModel/ModelName"/>Model<xsl:text disable-output-escaping="yes">></xsl:text> GetListFromDataTable(DataTable dt)
{
List<xsl:text disable-output-escaping="yes"><</xsl:text><xsl:value-of select="TabelModel/ModelName"/>Model<xsl:text disable-output-escaping="yes">></xsl:text> list = new List<xsl:text disable-output-escaping="yes"><</xsl:text><xsl:value-of select="TabelModel/ModelName"/>Model<xsl:text disable-output-escaping="yes">></xsl:text>();
if (dt != null <xsl:text disable-output-escaping="yes">&a