설정 한 ADO.NET 각 부모에 대해 여러 부모 행과 여러 자식 행을 삽입 나는 데이터 집합에서 두 datatables 있습니다 : 사용자 데이터내가 제대로 다음과 같은 시나리오를 해결하는 방법을 나에게 설명 할 수 ADO.NET의 하우투 또는 누군가 전문가를 찾고 있어요
- ParentTable (ParentID, 이름)
- ChildTable (ParentID, ActivityID, ...) 일정 데이터를
테이블은 의 Identity 열인 ParentID
에 의해 데이터베이스 레벨에서 함게 링크됩니다.
두 테이블 모두 GUI의 별도 DataGridView
에 바인딩 된 데이터입니다. 테이블 사이에 "1 부모/N 자식"관계가 있어야합니다. 즉, ParentTable
(새 사용자)에 새 항목을 만들면 하위 그리드에 DataGrid
이라는 클린을 입력하여 사용자의 일정 데이터를 입력합니다. 그래서 각 테이블에 두 개의 DataAdapters
을 설정하여 결과를 DataSet
으로 채 웁니다. 또한 DataRelation
개체를 설정하고 두 개의 테이블을 ParentID
열로 연결하려면 DataSet
에 할당합니다. 또한 ChildTable
에 행을 추가 할 때 DataGrid
을 사용하면 SetParentRow
을 사용하여 부모 행을 설정합니다.
With DAUser
.SelectCommand = New SqlCommand("UsersSelect", conn)
.SelectCommand.CommandType = CommandType.StoredProcedure
.SelectCommand.Parameters.AddWithValue("@UserID", MyID)
.Fill(DSData)
End With
With DAActivity
.SelectCommand = New SqlCommand("ActivitiesSelect", conn)
.SelectCommand.CommandType = CommandType.StoredProcedure
.SelectCommand.Parameters.AddWithValue("@UserID", MyID)
.Fill(DSData)
End With
DSData.Relations.Add(New DataRelation("UserActivity", DSData.Tables(0).Columns("ParentID"), DSData.Tables(1).Columns("ParentID")))
ChildTable에 행을 추가 :
아직Private Sub DTChildData_TableNewRow(sender As Object, e As System.Data.DataTableNewRowEventArgs) Handles DTChildData.TableNewRow
e.Row.SetParentRow(ParentDataRow)
End Sub
은 ChildTable
의 ParentID
열 ParentTable
이 업데이트 될 때 DB에서 검색 한 ID 값으로 채워지지 않습니다.
왜? 당신의 양쪽에 ParentID를 참조하고 있기 때문에,
1) 두 테이블 사이의 관계를 가장 가능성이 잘못된 것입니다 : 나는 ...이 문제를 통해
두 번째 채우기 작업 전에 기본 테이블 이름 "테이블"의 이름이 바뀌어 첫 번째 테이블을 덮어 쓰지 않습니다. 또한 Fill 대신 FillSchema를 사용하면 데이터 집합이 전혀 채워지지 않습니다 ... 이상합니다. – Daniel