逆水行船

别人的天堂,是我的异乡;无端的繁华,倍添我的惆怅

 

SQL-Server数据库中的表对象(扩展)

表对象包括的数据库表名称、数据库表ID、数据库表类型、数据库表描述、数据库表创建日期等信息。这些信息还不够的话,则我们可以扩展该对象。
扩展的信息可以包括:表包含的列信息、当前表的主键信息,当前表的外键信息,当前表被哪些表当成外键表,当前表的标识字段是哪个,当前表的主键字段都有哪一些。

using System;
using System.Data;
using System.Collections.Generic;
using System.Configuration;

/// <summary>
/// 数据库表扩展信息类.
/// </summary>
/// <author>天志</author>
/// <log date="2007-09-18">创建</log>
public class TableExpandDT: TableDT
{
    
public TableExpandDT()
    {
    }

    
public TableExpandDT(DataRowView dv)
        : 
base(dv)
    {
    }

    
#region 数据库表列信息

    
/// <summary>
    
/// 存储列信息的DataView。
    
/// </summary>
    public DataView ColumnsDataView
    {
        
get
        {
            
return DataMarket.GetColumnsForTable(this.Id);
        }
    }

    
/// <summary>
    
/// 数据库表列信息。
    
/// </summary>
    private ColumnList<ColumnDT> columns;

    
/// <summary>
    
/// 数据库表列信息。
    
/// </summary>
    public ColumnList<ColumnDT> Columns
    {
        
get
        {
            
if (columns == null)
            {
                DataView dv 
= this.ColumnsDataView;
                columns 
= new ColumnList<ColumnDT>();

                
foreach (DataRowView drv in dv)
                {                    
                    columns.Add(
new ColumnDT(drv));
                }
            }
            
return columns;
        }
    }
    
#endregion

    
#region 数据库表主键信息

    
/// <summary>
    
/// 存储主键信息的DataTable。
    
/// </summary>
    public DataTable PKDataTable
    {
        
get
        {
            
return DataMarket.GetTablePK(this.TableName);
        }
    }

    
/// <summary>
    
/// 主键集合。
    
/// </summary>
    private PKList<PKDT> pks;

    
/// <summary>
    
/// 主键集合。
    
/// </summary>
    public PKList<PKDT> PKs
    {
        
get
        {
            
if (pks != null)
            {
                
return pks;
            }

            pks 
= new PKList<PKDT>();
            DataView dv 
= this.PKDataTable.DefaultView;
            
foreach (DataRowView drv in dv)
            {
                pks.Add(
new PKDT(drv));
            }
            
return pks;
        }
    }
    
#endregion

    
#region 数据库表外键信息

    
/// <summary>
    
/// 存储数据库表外键信息的DataView。
    
/// </summary>
    public DataView FKDataView
    {
        
get
        {
            
return DataMarket.GetTableFK(this.Id);
        }
    }

    
/// <summary>
    
/// 外键集合.
    
/// </summary>
    private FKList<FKDT> fks;

    
/// <summary>
    
/// 外键集合.
    public FKList<FKDT> FKs
    {
        
get
        {
            
if (this.fks != null)
            {
                
return this.fks;
            }

            
this.fks = new FKList<FKDT>();

            DataView dv 
= this.FKDataView;
            
foreach (DataRowView drv in dv)
            {
                fks.Add(
new FKDT(drv));
            }
            
return fks;
        }
    }
    
#endregion

    
#region 数据库表引用外键

    
/// <summary>
    
/// 存储数据库表引用外键信息的DataView。
    
/// </summary>
    public DataView FKFromTableDataView
    {
        
get
        {
            
return DataMarket.GetFKFromTable(this.Id);
        }
    }

    
/// <summary>
    
/// 数据库表引用外键集合。
    
/// </summary>
    private FKList<FKDT> fromTableFKs;

    
/// <summary>
    
/// 数据库表引用外键集合。
    
/// </summary>
    public FKList<FKDT> FromTableFKs
    {
        
get
        {
            
if (this.fromTableFKs != null)
            {
                
return this.fromTableFKs;
            }

            DataView dv 
= this.FKFromTableDataView;
            
this.fromTableFKs = new FKList<FKDT>();
            
foreach (DataRowView drv in dv)
            {
                
this.fromTableFKs.Add(new FKDT(drv));
            }

            
return this.fromTableFKs;
        }
    }
    
#endregion

    
#region 数据库表特殊字段

    
/// <summary>
    
/// 标识字段。
    
/// </summary>
    public string MarkingColumn
    {
        
get
        {
            
foreach (ColumnDT column in this.Columns)
            {
                
if (column.IsMarking)
                {
                    
return column.ColumnName;
                }
            }
            
return "";
        }
    }

    
/// <summary>
    
/// 主键字段。
    
/// </summary>
    private List<string> pkColumns;

    
/// <summary>
    
/// 主键字段。
    public List<string> PKColumnNames
    {
        
get
        {
            
if (pkColumns != null)
            {
                
return pkColumns;
            }

            pkColumns 
= new List<string>();
            
foreach (PKDT dt in PKs)
            {
                pkColumns.Add(dt.ColumnName);
            }
            
return pkColumns;
        }
    }
    
#endregion
}


这里用到了几个对象,例如PKDT、FKDT,还没有创建过,后续的文章里会创建出来。

今天是9月18号,76年的今天,日本发动了侵华战争,中国开始了抗战。
在14年的战争中,我们付出了巨大的代价。  金瓯破缺,百姓涂炭。
事到如今,仍让我们思之心潮不平。



以前看过《正红旗下》,鸦片康乾盛世之后的清政府军队的无能,让人叹息。民国后的军阀更是混蛋,招致别人侮辱,也只能以3500万来还祖宗吃喝玩乐,争强斗狠欠给自己的债。
如果我们以后不希望自己成为自己,成为儿孙的累赘,希望大家过好日子,我觉得首先大家就要干好自己的事情,而不能当八旗子弟,也不能当成军阀,混战年年。
现在到某些事业部门去办事,那办事效率,真是......
殷鉴不远,将何为之?

posted on 2007-09-18 11:24  荣-  阅读(312)  评论(0编辑  收藏  举报

导航