2010-03-25 1 views
4

Order 및 Customers의 모든 행을 선택하는 DataAdapters로 DataSet을 채우고 전화하면자식 테이블에 부모 테이블에 부모가없는 행이 C#/ADO.NET 2.0에있는 경우 DataSet에 DataRelation을 추가 할 수 있습니다.

고객이없는 주문이있는 경우
 
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); 
} 

(http://msdn.microsoft.com/en-us/library/system.data.datarelation.aspx에서) 런타임 오류가있을 것입니다. 이는 버그가있는 프로그램이 고객이 삭제되었을 때 고객의 주문을 삭제하지 않은 경우에 발생할 수 있습니다.

내가 무엇을 넣어 주문 제외하고 추가 곳 조건을 선택 문자열을 수행 할 수 있습니다

 
CUSTID IN (SELECT DISTINCT CUSTID FROM CUSTOMERS) 

을 OR : 정말 그런 식으로 (모든 아이들이 부모를해야한다는)인가? 내 코드에도 버그가있을 수 있습니다. 내 코드에서 채워진 DataSet에 관계를 추가 할 때 예외가 발생합니다. 예외이다

형 'System.ArgumentException'처리되지 않은 예외가 system.data.dll

발생 상세 내용이 제약 모든 값이 대응하는 상위 값이 없다로 사용할 수 없다.

감사 & 베스트 감사합니다 - 마티

제약 여부를 시행하는 부울 값을 포함 추가() 메소드에 과부하가있다

답변

8

. 나는이 같은 과거에 사용했습니다 생각 :

죄송합니다

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

편집, 유일한 과부하이 방법 서명에 : http://msdn.microsoft.com/en-us/library/3zy636kc.aspx

DataRelationCollection.Add(String, DataColumn[], DataColumn[], bool) 
+0

고마워요! 나는 내가 인정하기 전에 시험해 본다. –

관련 문제