数据源,我们以SqlServer为例,可以看做数据表及其附属物的集合,拥有者大量的数据,是我们计算机程序数据的主要来源。
DataTable 是Ado.net基本类库中一种基于内容的对象,是数据库与数据控件的之间数据的暂时寄存点(还有DataSet,类似)。(表有列和约束构成,此为DataTable架构,经试验发现,存在一个属性用于保存表的约束,是DataRelation类 继承Constaint类,而Constraint类继承自Hashtable类 )
数据控件 ,是我们开发程序时,用于显示数据时使用的控件。与我称为数据中间站之间联系,与数据库简介联系。(关于手动方式绑定数据源,我们另当别论)
它们之间关系如下图所示:
有些人在使用数据控件如DetailsView时,会发现DetailsView对象的DataKey对象,微软解释为:表示数据绑定控件中某个记录的一个或多个主键字段。但是我的试验发现在数据的中间环节DataTable这一站时,已经丢失主键标识了(即数据的约束丢失),怎么可能在数据控件中有重新找回主键标识呢??
又经试验,发现DataKey对象为DataKeyNamespace属性设置时产生的对象,即DataKey是依赖于DataKeyNames的,而DataKeyNames是自己手动设置的,不一定与数据源中数据的主键一致,主要是为了数据控件显示数据时每条记录都能有唯一的标示符来区别其他记录,标识所显示记录,便于使用。
上文纯属本人实验结果,并非绝对准确!仅供参考~