逆水行船

别人的天堂,是我的异乡;无端的繁华,倍添我的惆怅

 

Attribute学习:SqlParameterAttribute

using System;
using System.Data;
using Debug = System.Diagnostics.Debug;

namespace WebApplication1
{
 /// <summary>
 /// 存储SQL语句参数信息的属性。
 /// 这些信息包括参数的名称、类型、方向、大小、精度等。
 /// </summary>
 [AttributeUsage(AttributeTargets.Parameter)]
 public class SqlParameterAttribute : Attribute
 {
  private string name;               // 参数名称       
  private bool paramTypeDefined;     // 是否参数的类型已经定义
  private SqlDbType paramType;       // 参数类型
  private int size;                  // 参数尺寸大小
  private byte precision;            // 参数精度
  private byte scale;                // 参数范围
  private bool directionDefined;     // 是否定义了参数方向
  private ParameterDirection direction;  // 参数方向

  public SqlParameterAttribute()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }

  public SqlParameterAttribute(string name)
  {
   Name = name;
  }

  public SqlParameterAttribute(int size)
  {
   Size = size;
  }

  public SqlParameterAttribute(SqlDbType paramType)
  {
   ParamType = paramType;
  }

  public SqlParameterAttribute(string name, SqlDbType paramType)
  {
   Name = name;
   ParamType = paramType;
  }

  public SqlParameterAttribute(SqlDbType paramType, int size)
  {
   ParamType = paramType;
   Size = size;
  }

  public SqlParameterAttribute(string name, int size)
  {
   Name = name;
   Size = size;
  }

  public SqlParameterAttribute(string name, SqlDbType paramType, int size)
  {
   Name = name;
   ParamType = paramType;
   Size = size;
  }


  /// <summary>
  /// 参数名称
  /// </summary>
  public string Name
  {
   get
   {
    return name == null ? string.Empty : name;
   }
   set
   {
    name = value;
   }
  }


  /// <summary>
  /// 参数尺寸大小
  /// </summary>
  public int Size
  {
   get
   {
    return size;
   }
   set
   {
    size = value;
   }
  }


  /// <summary>
  /// 参数精度
  /// </summary>
  public byte Precision
  {
   get
   {
    return precision;
   }
   set
   {
    precision = value;
   }
  }


  /// <summary>
  /// 参数范围
  /// </summary>
  public byte Scale
  {
   get
   {
    return scale;
   }
   set
   {
    scale = value;
   }
  }


  /// <summary>
  /// 参数方向
  /// </summary>
  public ParameterDirection Direction
  {
   get
   {
    Debug.Assert(directionDefined);
    return direction;
   }
   set
   {
    direction = value;
    directionDefined = true;
   }
  }


  /// <summary>
  /// 参数类型
  /// </summary>
  public SqlDbType ParamType
  {
   get
   {
    Debug.Assert(paramTypeDefined);
    return paramType;
   }
   set
   {
    paramType = value;
    paramTypeDefined = true;
   }
  }

  /// <summary>
  /// 是否已命名
  /// </summary>
  public bool IsNameDefined
  {
   get
   {
    return (name != null && name.Length != 0);
   }
  }

  /// <summary>
  /// 是否已设定参数类型
  /// </summary>
  public bool IsTypeDefined
  {
   get
   {
    return paramTypeDefined;
   }
  }

  /// <summary>
  /// 是否已设定参数方向
  /// </summary>
  public bool IsDirectionDefined
  {
   get
   {
    return directionDefined;
   }
  }

  /// <summary>
  /// 是否已设定范围
  /// </summary>
  public bool IsScaleDefined
  {
   get
   {
    return scale != 0;
   }
  }

  /// <summary>
  /// 是否已设定精度
  /// </summary>
  public bool IsPrecisionDefined
  {
   get
   {
    return precision != 0;
   }
  }

  /// <summary>
  /// 是否已设定大小
  /// </summary>
  public bool IsSizeDefined
  {
   get { return size != 0; }
  }
 }
}

posted on   荣-  阅读(207)  评论(0编辑  收藏  举报

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?

导航

统计

点击右上角即可分享
微信分享提示