扩展的信息可以包括:表包含的列信息、当前表的主键信息,当前表的外键信息,当前表被哪些表当成外键表,当前表的标识字段是哪个,当前表的主键字段都有哪一些。
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
}
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万来还祖宗吃喝玩乐,争强斗狠欠给自己的债。
如果我们以后不希望自己成为自己,成为儿孙的累赘,希望大家过好日子,我觉得首先大家就要干好自己的事情,而不能当八旗子弟,也不能当成军阀,混战年年。
现在到某些事业部门去办事,那办事效率,真是......
殷鉴不远,将何为之?