[C#]一步一步开发自己的自动代码生成工具之五:DAL层模板

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">&lt;</xsl:text><xsl:value-of select="TabelModel/ModelName"/>Model<xsl:text disable-output-escaping="yes">&gt;</xsl:text> GetListFromDataTable(DataTable dt)
  {
   List<xsl:text disable-output-escaping="yes">&lt;</xsl:text><xsl:value-of select="TabelModel/ModelName"/>Model<xsl:text disable-output-escaping="yes">&gt;</xsl:text> list = new List<xsl:text disable-output-escaping="yes">&lt;</xsl:text><xsl:value-of select="TabelModel/ModelName"/>Model<xsl:text disable-output-escaping="yes">&gt;</xsl:text>();
   if (dt != null <xsl:text disable-output-escaping="yes">&a

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值