您的位置:首页 > 数据库

SQL数据库抽像工厂类,相关特性的定义

2013-03-22 22:44 211 查看
/// <summary>
/// 权限验证
/// </summary>
public sealed class ResultAttribute : Attribute
{
/// <summary>
/// 类属于哪个页面
/// </summary>
public string Referfer { get; set; }
/// <summary>
/// 是否进行验证
/// </summary>
public bool RoleCheck { get; set; }
}
/// <summary>
/// 类、属性或方法特性
/// </summary>
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public sealed class CommandAttribute : Attribute
{
/// <summary>
/// 类、属性或方法特性
/// </summary>
/// <param name="_cmdname">类,方法或属性名称</param>
/// <param name="_author">作者或修订人</param>
/// <param name="_creation">创建或修订时间</param>
/// <param name="_remark">创建或修订内容</param>
public CommandAttribute(string _cmdname, string _author, string _creation, string _remark)
{
this.CommandName = _cmdname;
this.Author = _author;
this.Creation = _creation;
this.Remark = _remark;
}
/// <summary>
/// 类,方法或属性名称
/// </summary>
public string CommandName { get; set; }
/// <summary>
/// 作者或修订人
/// </summary>
public string Author { get; set; }
/// <summary>
/// 创建或修订时间
/// </summary>
public string Creation { get; set; }
/// <summary>
/// 创建或修订内容
/// </summary>
public string Remark { get; set; }
}

/// <summary>
/// 数据表列名映射
/// </summary>
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public sealed class ColumnMap : Attribute
{
/// <summary>
/// 映射字段
/// </summary>
/// <param name="_ColumnName">列字段名</param>
/// <param name="_ColumnLen">长度</param>
/// <param name="_DataType">数据类型</param>
/// <param name="_Remark">字段说明</param>
/// <param name="_IsNull">是否允许空值</param>
/// <param name="_PrimaryKey">是否为主键</param>
/// <param name="_Mark">是否为自增或默认值,True:则不对此列进行Insert与Update操作</param>
public ColumnMap(string _ColumnName, string _ColumnLen, object _DataType, string _Remark, bool _IsNull, bool _PrimaryKey, bool _Mark)
{
this.ColumnName = _ColumnName;
this.ColumnLen = _ColumnLen;
this.DataType = _DataType;
this.Remark = _Remark;
this.IsNull = _IsNull;
this.PrimaryKey = _PrimaryKey;
this.Mark = _Mark;
this.IsSetValue = true;
this.ValueTp = ValueType.Null;
this.IsValueTemp = false;
}
/// <summary>
/// 映射字段
/// </summary>
/// <param name="_ValueType">子表查询的返回类型</param>
/// <param name="_ValueTableName">子表表名和对应的实体类名</param>
/// <param name="_KeyCol">子表条件字段名</param>
/// <param name="_ParentCol">父表关联字段名</param>
/// <param name="_ReadValueCols">查询的列</param>
public ColumnMap( ValueType _ValueType, string _ValueTableName, string _KeyCol, string _ParentCol, string _ReadValueCols)
{
this.IsSetValue = false;
this.ValueTp = _ValueType;
this.ValueTableName = _ValueTableName;
this.KeyCol = _KeyCol;
this.ParentCol = _ParentCol;
this.IsOrderBy = false;
this.ReadValueCols = _ReadValueCols;
this.IsValueTemp = false;
}
/// <summary>
/// 映射字段
/// </summary>
/// <param name="_ValueType">子表查询的返回类型</param>
/// <param name="_ValueTableName">子表表名和对应的实体类名</param>
/// <param name="_KeyCol">子表条件字段名,多个用|分隔</param>
/// <param name="_ParentCol">父表关联字段名或条件值(值不能与字段名相同),多个用|分隔</param>
/// <param name="_OrderByKey">排序列</param>
/// <param name="_OrderBy">排序方式</param>
/// <param name="_ReadValueCols">查询的列</param>
public ColumnMap(ValueType _ValueType, string _ValueTableName, string _KeyCol, string _ParentCol, string _OrderByKey, OrderBy _OrderBy, string _ReadValueCols)
{
this.IsSetValue = false;
this.ValueTp = _ValueType;
this.ValueTableName = _ValueTableName;
this.KeyCol = _KeyCol;
this.ParentCol = _ParentCol;
this.OrderByKey = _OrderByKey;
this.OrderBy = _OrderBy;
this.IsOrderBy = true;
this.ReadValueCols = _ReadValueCols;
this.IsValueTemp = false;
}
/// <summary>
/// 映射临时存储单位,只能为TRUE
/// </summary>
/// <param name="_IsValueTemp"></param>
public ColumnMap(bool _IsValueTemp, string _ValueTempName)
{
this.IsSetValue = false;
this.IsValueTemp = true;
this.ValueTempName = _ValueTempName;
}
/// <summary>
/// 列字段名
/// </summary>
public string ColumnName { get; set; }
/// <summary>
/// 长度
/// </summary>
public string ColumnLen { get; set; }
/// <summary>
/// 数据类型
/// </summary>
public object DataType { get; set; }
/// <summary>
/// 字段说明
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 是否允许空值
/// </summary>
public bool IsNull { get; set; }
/// <summary>
/// 是否为主键
/// </summary>
public bool PrimaryKey { get; set; }
/// <summary>
/// 是否为自增或默认值,True则不对此列进行INSERT和UPDATE
/// </summary>
public bool Mark { get; set; }
/// <summary>
/// 是否在允许在此类直接附值,应用于多表查询带子实体表内容的,此项主要应用于查询
/// </summary>
public bool IsSetValue { get; set; }
/// <summary>
/// 是否为临时存储对象,应用于子实体类关联查询时的临时储值对象,对List作用
/// </summary>
public bool IsValueTemp { get; set; }
/// <summary>
/// 当存在临时存储对象时,临时对象对应的属性名称
/// </summary>
public string ValueTempName { get; set; }
/// <summary>
/// 子表查询的返回类型
/// </summary>
public ValueType ValueTp { get; set; }
/// <summary>
/// 子表表名和对应的实体类名
/// </summary>
public string ValueTableName { get; set; }
/// <summary>
/// 查询要返回的列
/// </summary>
public string ReadValueCols { get; set; }
/// <summary>
/// 子表条件字段名,多个用|分隔,并用必须与父表关联字段对应
/// </summary>
public string KeyCol { get; set; }
/// <summary>
/// 父表关联字段名,多个用|分隔,或查询条件值
/// </summary>
public string ParentCol { get; set; }
/// <summary>
/// 子查询是否排序
/// </summary>
public bool IsOrderBy { get; set; }
/// <summary>
/// 排序列
/// </summary>
public string OrderByKey { get; set; }
/// <summary>
/// 排序方式
/// </summary>
public OrderBy OrderBy { get; set; }
}
public enum ValueType{
List,
Row,
Scalar,
Null
}
/// <summary>
/// 数据表列名映射
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public sealed class TableMap : Attribute
{
/// <summary>
/// 映射数据库表
/// </summary>
/// <param name="_DataName">数据库名</param>
/// <param name="_TableName">表名</param>
public TableMap(string _DataName, string _TableName)
{
this.TableName = _TableName;
this.DataName = _DataName;
}
/// <summary>
/// 映射表名
/// </summary>
public string TableName { get; set; }
/// <summary>
/// 所属数据库名
/// </summary>
public string DataName { get; set; }
}

/// <summary>
/// 获取指定属性对象的特性
/// </summary>
/// <typeparam name="T"></typeparam>
public sealed class AttributeProperty<T> where T : class
{
public static T GetTableMapAttribute(PropertyInfo t)
{
T Map = default(T);
T[] MapAttributes = t.GetCustomAttributes(typeof(T), true) as T[];
if (MapAttributes.Length > 0)
{
Map = MapAttributes[0];
}
return Map;
}
}
/// <summary>
/// 获取指定类对象的特性
/// </summary>
public sealed class AttributeTag<T, A>
where T : class
where A : class
{
/// <summary>
/// 获取表所映射的特性
/// </summary>
/// <param name="t">对象</param>
/// <returns></returns>
public static A GetTableMapAttribute(T t)
{
A Map = default(A);
Type MapType = t.GetType();
A[] MapAttributes = MapType.GetCustomAttributes(typeof(A), true) as A[];
if (MapAttributes.Length > 0)
{
Map = MapAttributes[0];
}
return Map;
}
}
public sealed class ModelAttributeTag<A>
where A : class
{
/// <summary>
/// 获取表所映射的特性
/// </summary>
/// <param name="t">对象</param>
/// <returns></returns>
public static A GetTableMapAttribute(Type MapType)
{
A Map = default(A);

A[] MapAttributes = MapType.GetCustomAttributes(typeof(A), true) as A[];
if (MapAttributes.Length > 0)
{
Map = MapAttributes[0];
}
return Map;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: