C# 在C/ADO.NET 2.0中,如果子表包含在父表中没有父表的行,是否可以将DataRelation添加到数据集

C# 在C/ADO.NET 2.0中,如果子表包含在父表中没有父表的行,是否可以将DataRelation添加到数据集,c#,ado.net,C#,Ado.net,如果我用DataAdapters填充数据集,这些DataAdapters从Orders和Customers中选择所有行并调用: private void CreateRelation() { // Get the DataColumn objects from two DataTable objects // in a DataSet. Code to get the DataSet not shown here. DataColumn parentColumn =

如果我用DataAdapters填充数据集,这些DataAdapters从Orders和Customers中选择所有行并调用:

private void CreateRelation() { // Get the DataColumn objects from two DataTable objects // in a DataSet. Code to get the DataSet not shown here. DataColumn parentColumn = DataSet1.Tables["Customers"].Columns["CustID"]; DataColumn childColumn = DataSet1.Tables["Orders"].Columns["CustID"]; // Create DataRelation. DataRelation relCustOrder; relCustOrder = new DataRelation("CustomersOrders", parentColumn, childColumn); // Add the relation to the DataSet. DataSet1.Relations.Add(relCustOrder); } 从

如果存在没有客户的订单,则会出现运行时错误。当客户被删除时,有缺陷的程序没有删除客户的订单时,可能会发生这种情况

除了下订单选择字符串外,我还能做什么?附加where条件:

CUSTID IN (SELECT DISTINCT CUSTID FROM CUSTOMERS) 或者:真的是所有的孩子都必须有父母吗?我的代码可能也有bug。在代码中将关系添加到填充的数据集时,会发生异常。例外情况是:

System.Data.dll中发生类型为“System.ArgumentException”的未处理异常

其他信息:无法启用此约束,因为并非所有值都具有相应的父值


感谢并致以最诚挚的问候-Matti

Add方法上有一个重载,它包含一个bool值来强制约束或不强制约束。我想我以前用过这样的方法:

DataRelation dr = ds.Relations.Add("name", DataColumnParent, DataColumnChild, false);
编辑

很抱歉,唯一的重载在此方法签名上:


谢谢!我在接受之前试过了。
DataRelationCollection.Add(String, DataColumn[], DataColumn[], bool)