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
}
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万来还祖宗吃喝玩乐,争强斗狠欠给自己的债。
如果我们以后不希望自己成为自己,成为儿孙的累赘,希望大家过好日子,我觉得首先大家就要干好自己的事情,而不能当八旗子弟,也不能当成军阀,混战年年。
现在到某些事业部门去办事,那办事效率,真是......
殷鉴不远,将何为之?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构