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; } }
相关文章推荐
- SQL数据库抽像工厂类,方法参数类的定义
- JavaScript的相关继承笔记以及使用外部库实现JavaScript的面向对象特性
- 第五节 面向对象相关特性
- java8新特性学习笔记(二) 流的相关思想
- Spring4新特性:Groovy Bean定义DSL
- javaSE_8系列博客——Java语言的特性(四)--注解--(3)-- 预定义注解
- 11g新特性 密码错误验证延迟特性的相关验证
- 【转】HBase客户端API:管理特性 - 架构(schema)定义
- C标准库源码解剖(1):类型相关的定义
- VS软件版本号定义、规则和相关的Visual Studio插件
- UI测试的定义和相关概念
- spring mvc定义登录拦截器(不登录不让访问相关资源),为什么要放权/login.do(就是不拦截/login.do)?
- C++ 11 新特性之容器相关特性
- C#特性及反射相关
- solr6.3 相关特性及环境搭建
- C#关于SQL数据库连接的相关函数!
- 通讯中的相关(自相关,互相关)定义及理解
- 与属性相关的设计时特性
- Go语言栈定义及相关方法实现
- Extjs4 类定义创建和特性