• 关系数据库元数据处理类(三) 创建查询元数据公共类


      1 public abstract class BaseMetadata : IMetadata
      2     {
      3         protected IDbUtility DbUtility;
      4 
      5         protected BaseMetadata(IDbUtility dbUtility)
      6         {
      7             DbUtility = dbUtility;
      8         }
      9 
     10         #region 字符串
     11 
     12         /// <summary>
     13         /// 获取所有数据库信息的字符串
     14         /// </summary>
     15         /// <returns></returns>
     16         protected abstract string GetDataBaseSting();
     17 
     18         /// <summary>
     19         /// 获取所有表信息字符串
     20         /// </summary>
     21         /// <returns></returns>
     22         protected abstract string GetDataTableString(string database = "");
     23 
     24         /// <summary>
     25         /// 获取所有字段字符串
     26         /// </summary>
     27         /// <returns></returns>
     28         protected abstract string GetDataColumnString();
     29 
     30         /// <summary>
     31         /// 获取所有外键字符串
     32         /// </summary>
     33         /// <returns></returns>
     34         protected abstract string GetDataRelationString();
     35 
     36         #endregion
     37 
     38         #region 转换
     39 
     40         /// <summary>
     41         /// 将DataRow转换为Database对象
     42         /// </summary>
     43         /// <param name="table"></param>
     44         /// <returns></returns>
     45         protected abstract List<Database> ConversionDatabase(DataTable table);
     46 
     47         /// <summary>
     48         /// 将DataRow转换为Table对象
     49         /// </summary>
     50         /// <param name="table"></param>
     51         /// <returns></returns>
     52         protected abstract List<Table> ConversionDataTable(DataTable table);
     53 
     54         /// <summary>
     55         /// 将DataRow转换为Table对象
     56         /// </summary>
     57         /// <param name="table"></param>
     58         /// <returns></returns>
     59         protected abstract List<Column> ConversionColumn(DataTable table);
     60 
     61         /// <summary>
     62         /// 将DataRow转换为Table对象
     63         /// </summary>
     64         /// <param name="table"></param>
     65         /// <returns></returns>
     66         protected abstract List<Relation> ConversionDataRelation(DataTable table);
     67 
     68         #endregion
     69 
     70         #region 操作
     71 
     72         public Database GetDatabase(ISpecification<Database> specification)
     73         {
     74             return GetAllDatabase().First(specification.SatisfiedBy().Compile());
     75         }
     76 
     77         public List<Database> GetAllDatabase()
     78         {
     79             return FinDatabases(null);
     80         }
     81 
     82         public List<Database> FinDatabases(ISpecification<Database> specification)
     83         {
     84             DataTable data = DbUtility.ExecuteDataTable(GetDataBaseSting());
     85             List<Database> databases = ConversionDatabase(data);
     86             if (specification != null)
     87                 databases = databases.Where(specification.SatisfiedBy().Compile()).ToList();
     88             return databases;
     89         }
     90 
     91         public Table GeTable(ISpecification<Table> specification)
     92         {
     93             return GetAllTable().First(specification.SatisfiedBy().Compile());
     94         }
     95 
     96         public List<Table> GetAllTable()
     97         {
     98             return FindTables(null);
     99         }
    100 
    101         public List<Table> FindTables(ISpecification<Table> specification)
    102         {
    103             DataTable data = DbUtility.ExecuteDataTable(GetDataTableString());
    104             List<Table> tables = ConversionDataTable(data);
    105             if (specification != null)
    106                 tables = tables.Where(specification.SatisfiedBy().Compile()).ToList();
    107             return tables;
    108         }
    109 
    110         public Column GetColumn(ISpecification<Column> specification)
    111         {
    112             return GetAllColumns().First(specification.SatisfiedBy().Compile());
    113         }
    114 
    115         public List<Column> GetAllColumns()
    116         {
    117             return FindColumns(null);
    118         }
    119 
    120         public List<Column> FindColumns(ISpecification<Column> specification)
    121         {
    122             DataTable data = DbUtility.ExecuteDataTable(GetDataColumnString());
    123             List<Column> columns = ConversionColumn(data);
    124             if (specification != null)
    125                 columns = columns.Where(specification.SatisfiedBy().Compile()).ToList();
    126             return columns;
    127         }
    128 
    129         public List<Relation> GetAllRelation()
    130         {
    131             return FindRelations(null);
    132         }
    133 
    134         public Relation GeRelation(ISpecification<Relation> specification)
    135         {
    136             return GetAllRelation().First(specification.SatisfiedBy().Compile());
    137         }
    138 
    139 
    140         public List<Relation> FindRelations(ISpecification<Relation> specification)
    141         {
    142             DataTable data = DbUtility.ExecuteDataTable(GetDataRelationString());
    143             List<Relation> relations = ConversionDataRelation(data);
    144             if (specification != null)
    145                 relations = relations.Where(specification.SatisfiedBy().Compile()).ToList();
    146             return relations;
    147         }
    148 
    149         #endregion
    150     }
  • 相关阅读:
    未来中国最热门的十大职业排行榜
    中国金融牌照18种(内附各牌照注册条件)
    现有的一些人脸数据库
    广信科教集团
    省部级干部list
    解读Google分布式锁服务
    数学算法那些事
    细数二十世纪最伟大的十大算法
    链接分析算法之:HillTop算法
    Regex Failure
  • 原文地址:https://www.cnblogs.com/zhongkai/p/3649914.html
Copyright © 2020-2023  润新知