Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从表适配器填充相关数据集_C#_Strongly Typed Dataset - Fatal编程技术网

C# 从表适配器填充相关数据集

C# 从表适配器填充相关数据集,c#,strongly-typed-dataset,C#,Strongly Typed Dataset,我在.NET(2.0版)中使用表适配器和数据集 我有两张这样的桌子: Table1 ------ ... TypeId Table2 ------ Id Name Table1Adapter adapter = new Table1Adapter(); Table1DataSet data = adapter.GetData(); foreach(Table1Row row in data) { ... } // Can now iterate through and display th

我在.NET(2.0版)中使用表适配器和数据集

我有两张这样的桌子:

Table1
------
...
TypeId

Table2
------
Id
Name
Table1Adapter adapter = new Table1Adapter();
Table1DataSet data = adapter.GetData();

foreach(Table1Row row in data) { ... }
// Can now iterate through and display the data
其中Table1.TypeId链接到Table2.Id

我已经使用向导强烈生成了这些类型,因此现在可以执行以下操作:

Table1
------
...
TypeId

Table2
------
Id
Name
Table1Adapter adapter = new Table1Adapter();
Table1DataSet data = adapter.GetData();

foreach(Table1Row row in data) { ... }
// Can now iterate through and display the data

这一切都很好。但现在我还需要表2中的数据。我注意到第行中有一个生成的字段Table2Row,它看起来很理想,但设置为null。如何正确填充此数据集?

类型化数据集中的每个数据表都有自己的TableAdapter。因此,必须对数据集中的每个数据表执行相同的步骤

不存在任何允许您自动填充整个类型化数据集的api,或者在支持此功能的类型化数据集中不生成此类代码。这也很难做到,因为TableAdapters没有一个公共基类可以让您做到这一点

如果确实需要这样做,则必须维护DataTable类型名称和TableAdapter类型名称的集合,并迭代该集合以执行数据集填充


因此,我建议以“硬代码”的方式为每个表填充数据集。

类型化数据集中的每个数据表都有自己的TableAdapter。因此,必须对数据集中的每个数据表执行相同的步骤

不存在任何允许您自动填充整个类型化数据集的api,或者在支持此功能的类型化数据集中不生成此类代码。这也很难做到,因为TableAdapters没有一个公共基类可以让您做到这一点

如果确实需要这样做,则必须维护DataTable类型名称和TableAdapter类型名称的集合,并迭代该集合以执行数据集填充


因此,我建议以“硬代码”的方式为每个表填充数据集。

实际上,有一个名为“MSDataShape”的Microsoft数据提供程序提供了此功能。上次我检查时,它被标记为折旧,我不知道当前状态和未来计划是什么,也不知道是什么替代了它

下面是一个单个“SQL命令”的示例,我相信它将返回一个
数据集
,其中包含两个密切相关的
数据表
-s:

   SHAPE  {select * from customers}
   APPEND ({select * from orders} AS rsOrders
           RELATE customerid TO customerid)
对于XML查询,可能的替代品是精心设计的,但我还没有考虑过

编辑:
我认为使用XML确实可以做到这一点。

实际上,有一个名为“MSDataShape”的Microsoft数据提供程序提供了此功能。上次我检查时,它被标记为折旧,我不知道当前状态和未来计划是什么,也不知道是什么替代了它

下面是一个单个“SQL命令”的示例,我相信它将返回一个
数据集
,其中包含两个密切相关的
数据表
-s:

   SHAPE  {select * from customers}
   APPEND ({select * from orders} AS rsOrders
           RELATE customerid TO customerid)
对于XML查询,可能的替代品是精心设计的,但我还没有考虑过

编辑:
我认为使用XML确实可以做到这一点。

好的,将这些数据合并到父数据表中的最佳方法是什么?创建每个TableAdapter的实例并填充数据集。您不需要一次填充整个数据集,您必须逐表填充。因此,如果我有两个适配器和两个数据集,如何强制执行该关系?我确实希望执行类似row.typerow.NameRelationships的操作,但您将无法以关系方式访问它们。对于以这种方式通过的任何其他人,您可以使用GetChildRows和GetParentRow方法在数据集中的表之间进行关系导航。此外,您还可以使用基于表达式的列来查找固定数据等。好的,将这些数据合并到我的父数据表中的最佳方法是什么?创建每个TableAdapter的实例并填充数据集。您不需要一次填充整个数据集,您必须逐表填充。因此,如果我有两个适配器和两个数据集,如何强制执行该关系?我确实希望执行类似row.typerow.NameRelationships的操作,但您将无法以关系方式访问它们。对于以这种方式通过的任何其他人,您可以使用GetChildRows和GetParentRow方法在数据集中的表之间进行关系导航。还可以使用基于表达式的列查找现有数据等。