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; }
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?