以表名"MyTable",及字段 FirstName varchar(30),FamilyName varchar(30)为例
非强类型(UnTyped)Dataset 无需预先定义对应表的各个字段的属性,可以直接从查询出来的结果集(非强类型(UnTyped)Dataset)中取值例如: string lFirstName = lDs.Table["MyTable"].Rows[0]["FirstName"].ToString(); (其中lDs是类Dataset的一个对象)
强类型的(Strong-Typed)Dataset 需要预先定义对应表的各个字段的属性(需要从DataSet, DataTable, DataRow继承,生成MyDataset,MyDataTable,MyDataRow类),取值方式 例如:string lFirstName = lTypedDs.MyTable[0].FirstName;
(其中lTypedDs是类MyDataset的一个对象;
lTypedDs.MyTable是类MyDataTable的一个对象,它是MyDataset类的一个属性;
lTypedDs.MyTable[0]返回一个MyDataRow对象,它就是一个实体的具体定义类EntityObject(包括属性FirstName 和FamilyName),对应于表MyTable的Schema;
lTypedDs.MyTable[0].FirstName是String类型,它是MyDataRow一个属性)
该强类型的大概伪代码如下(大家可以通过IDE环境的生产表MyDataTable对应的XSD,在通过XSD自动产生强类型Dataset:MyDataset的完整代码):
public class MyDataset : DataSet
{
public MyDataset()
{
this.MyTable = new MyDataTable();
}
以表名"MyTable",及字段 FirstName varchar(30),FamilyName varchar(30)为例
非强类型(UnTyped)Dataset 无需预先定义对应表的各个字段的属性,可以直接从查询出来的结果集(非强类型(UnTyped)Dataset)中取值例如: string lFirstName = lDs.Table["MyTable"].Rows[0]["FirstName"].ToString(); (其中lDs是类Dataset的一个对象)
强类型的(Strong-Typed)Dataset 需要预先定义对应表的各个字段的属性(需要从DataSet, DataTable, DataRow继承,生成MyDataset,MyDataTable,MyDataRow类),取值方式 例如:string lFirstName = lTypedDs.MyTable[0].FirstName;
(其中lTypedDs是类MyDataset的一个对象;
lTypedDs.MyTable是类MyDataTable的一个对象,它是MyDataset类的一个属性;
lTypedDs.MyTable[0]返回一个MyDataRow对象,它就是一个实体的具体定义类EntityObject(包括属性FirstName 和FamilyName),对应于表MyTable的Schema;
lTypedDs.MyTable[0].FirstName是String类型,它是MyDataRow一个属性)
该强类型的大概伪代码如下(大家可以通过IDE环境的生产表MyDataTable对应的XSD,在通过XSD自动产生强类型Dataset:MyDataset的完整代码):
public class MyDataset : DataSet
{
public MyDataset()
{
this.MyTable = new MyDataTable();
}
public class MyDataTable : DataTable
{
internal DataColumn columnFirstName;
internal DataColumn columnFamilyName;
internal MyDataTable() :
base("MyTable")
{
this.columnFirstName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
this.Columns.Add(this.columnFirstName);
this.columnFamilyName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
this.Columns.Add(this.columnFamilyName);
}
public MyDataRow this[int index]
{
get {
return ((MyDataRow )(this.Rows[index]));
}
}
}
public class MyDataRow : DataRow
{
internal MyDataRow(DataRowBuilder rb) :
base(rb) {
this.tableMyTable = ((MyDataTable)(this.Table));
}
private MyDataTable tableMyTable;
public string FirstName
{
get {
return ((string)(this[this.tableMyTable.columnFirstName]));
}
set {
this[this.tableMyTable.columnFirstName] = value;
}
}
public string FamilyName
get {
return ((string)(this[this.tableMyTable.columnFamilyName]));
}
set {
this[this.tableMyTable.columnFamilyName] = value;
}
}
public MyDataTable MyTable;
}
public class MyDataset : DataSet
{
public MyDataset()
{
this.MyTable = new MyDataTable();
}
public class MyDataTable : DataTable
{
internal DataColumn columnFirstName;
internal DataColumn columnFamilyName;
internal MyDataTable() :
base("MyTable")
{
this.columnFirstName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
this.Columns.Add(this.columnFirstName);
this.columnFamilyName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
this.Columns.Add(this.columnFamilyName);
}
public MyDataRow this[int index]
{
get {
return ((MyDataRow )(this.Rows[index]));
}
}
}
public class MyDataRow : DataRow
{
internal MyDataRow(DataRowBuilder rb) :
base(rb) {
this.tableMyTable = ((MyDataTable)(this.Table));
}
private MyDataTable tableMyTable;
public string FirstName
{
get {
return ((string)(this[this.tableMyTable.columnFirstName]));
}
set {
this[this.tableMyTable.columnFirstName] = value;
}
}
public string FamilyName
get {
return ((string)(this[this.tableMyTable.columnFamilyName]));
}
set {
this[this.tableMyTable.columnFamilyName] = value;
}
}
public MyDataTable MyTable;
}
public class MyDataset : DataSet
{
public MyDataset()
{
this.MyTable = new MyDataTable();
}
以表名"MyTable",及字段 FirstName varchar(30),FamilyName varchar(30)为例
非强类型(UnTyped)Dataset 无需预先定义对应表的各个字段的属性,可以直接从查询出来的结果集(非强类型(UnTyped)Dataset)中取值例如: string lFirstName = lDs.Table["MyTable"].Rows[0]["FirstName"].ToString(); (其中lDs是类Dataset的一个对象)
强类型的(Strong-Typed)Dataset 需要预先定义对应表的各个字段的属性(需要从DataSet, DataTable, DataRow继承,生成MyDataset,MyDataTable,MyDataRow类),取值方式 例如:string lFirstName = lTypedDs.MyTable[0].FirstName;
(其中lTypedDs是类MyDataset的一个对象;
lTypedDs.MyTable是类MyDataTable的一个对象,它是MyDataset类的一个属性;
lTypedDs.MyTable[0]返回一个MyDataRow对象,它就是一个实体的具体定义类EntityObject(包括属性FirstName 和FamilyName),对应于表MyTable的Schema;
lTypedDs.MyTable[0].FirstName是String类型,它是MyDataRow一个属性)
该强类型的大概伪代码如下(大家可以通过IDE环境的生产表MyDataTable对应的XSD,在通过XSD自动产生强类型Dataset:MyDataset的完整代码):
public class MyDataset : DataSet
{
public MyDataset()
{
this.MyTable = new MyDataTable();
}
public class MyDataTable : DataTable
{
internal DataColumn columnFirstName;
internal DataColumn columnFamilyName;
internal MyDataTable() :
base("MyTable")
{
this.columnFirstName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
this.Columns.Add(this.columnFirstName);
this.columnFamilyName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
this.Columns.Add(this.columnFamilyName);
}
public MyDataRow this[int index]
{
get {
return ((MyDataRow )(this.Rows[index]));
}
}
}
public class MyDataRow : DataRow
{
internal MyDataRow(DataRowBuilder rb) :
base(rb) {
this.tableMyTable = ((MyDataTable)(this.Table));
}
private MyDataTable tableMyTable;
public string FirstName
{
get {
return ((string)(this[this.tableMyTable.columnFirstName]));
}
set {
this[this.tableMyTable.columnFirstName] = value;
}
}
public string FamilyName
get {
return ((string)(this[this.tableMyTable.columnFamilyName]));
}
set {
this[this.tableMyTable.columnFamilyName] = value;
}
}
public MyDataTable MyTable;
}
public class MyDataset : DataSet
{
public MyDataset()
{
this.MyTable = new MyDataTable();
}
public class MyDataTable : DataTable
{
internal DataColumn columnFirstName;
internal DataColumn columnFamilyName;
internal MyDataTable() :
base("MyTable")
{
this.columnFirstName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
this.Columns.Add(this.columnFirstName);
this.columnFamilyName = new DataColumn("FirstName", typeof(string), null, System.Data.MappingType.Element);
this.Columns.Add(this.columnFamilyName);
}
public MyDataRow this[int index]
{
get {
return ((MyDataRow )(this.Rows[index]));
}
}
}
public class MyDataRow : DataRow
{
internal MyDataRow(DataRowBuilder rb) :
base(rb) {
this.tableMyTable = ((MyDataTable)(this.Table));
}
private MyDataTable tableMyTable;
public string FirstName
{
get {
return ((string)(this[this.tableMyTable.columnFirstName]));
}
set {
this[this.tableMyTable.columnFirstName] = value;
}
}
public string FamilyName
get {
return ((string)(this[this.tableMyTable.columnFamilyName]));
}
set {
this[this.tableMyTable.columnFamilyName] = value;
}
}
public MyDataTable MyTable;
}