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; }
}
}
}