2011-09-17 2 views
0

Visual Studio 2010의 구성 마법사를 사용하여 만든 두 개의 TableAdapter (1 대 다수 관계)가있는 DataSet이 있습니다.DataSet TableAdapter 채우기 메서드

외부 소스를 호출하고 사전에 결과를 채 웁니다. 이 결과는 데이터베이스의 모든 항목이어야합니다. DB를 동기화하기 위해 모든 테이블을 삭제 한 다음 테이블을 삭제하고 sql에서 새 데이터로 테이블을 만드는 것과 같이 다시 채우고 싶지는 않습니다.

TableAdapter.Fill() 메서드를 사용할 수있는 확실한 방법이 있습니까? 아니면 행별로 두 테이블을 반복하고 머물거나 삭제 된 다음 새 항목을 추가해야합니까? 사전에있는 데이터를 DataSet이있는 두 테이블의 유일한 데이터로 만드는 가장 좋은 방법은 무엇입니까?

답변

0

첫 번째 질문 : 동일한 DB 인 경우 동일한 정보가 포함 된 2 개의 테이블이있는 이유는 무엇입니까?

손에 달려있는 질문 : 더 큰 것은 크기에 달려 있습니다. 테이블이 크지 않은 경우 트랜잭션을 사용하고 테이블을 지우고 (DELETE * FROM TABLE 등) 데이터를 다시 작성하십시오. 테이블이 큰 경우 질문은 다음과 같습니다.이 모든 것을 사전에로드 할 수 있습니까?

물론 일관성없는 데이터 (사전에 다른 사용자/앱이 데이터를 변경 한 경우)가 발생하면 스스로에게 물어봐야합니다.

오래 걸린다면 데이터에 무엇을했는지 기억할 수 있습니다. 즉, 변경된 데이터에 플래그를 지정하고 삭제 된 키와 새로 삽입 된 행을 기억하고이를 기반으로 업데이트합니다.

두 가지 모두 채워진 데이터 테이블을 기억하고이를 배경 필드로 사용하거나 자신의 메커니즘을 구현하여 얻을 수 있습니다.

나는 어떤 식 으로든 문제를 생각하는 것이 좋습니다. 사전이 정말로 필요합니까? 데이터베이스를 쿼리하여 데이터를 가져 오는 것은 어떻습니까? 또는 빠른 액세스를 위해 데이터의 일부만 캐시합니까?

PS : 당신의 업데이트 방법은 데이터 어댑터는 모든 일을 할 것입니다 (즉, 변경 변경이 삭제 제거하고 새 데이터 행을 삽입을하지만 업데이트됩니다 DataTable을/그래서 이것은 한 번만 사용할 설정)

+0

나는 수정중인 데이터베이스에만 액세스 할 수 있습니다. 다른 db는 활성 디렉토리의 어딘가에오고 있으며 해시 데이터 구조에 결과를 저장할 때만 System.DirectoryServices API를 통해 액세스 할 수 있습니다. 데이터 집합에 대한 액세스 권한이있는 경우 SQL을 직접 사용하는 방법이 있습니까? – Ben

+0

AD 데이터베이스에 쓸 수 있습니까? 그렇다면 onw 데이터베이스를 전혀 사용하지 않는 이유 (성능) AD의 데이터베이스 전문가와 협력 할 수있는 방법을 찾을 수 있습니까? – Carsten

+0

광고 만 읽을 수 있습니다. 나는 주로 상사 때문에 내 DB를 사용해야합니다. 그것은 AD에 저장되어있는 데이터의 작은 하위 집합이지만 AD는 마스터 데이터베이스와 비슷하며 작은 하위 집합을 흉내 내고 있기 때문에 쓰기를 원하지 않습니다. – Ben

0

이 전체 테이블을 다시 채우는 것보다 더 반복적으로 반복하고 어떤 레코드가/머무르는 지 결정할 수 있습니다. SQL 문을 통해 레코드가 삭제되었는지 결정하는 과정을 수행 할 수 없습니까? (데이터베이스에서 활성 상태 = false 일 때 테이블에서 삭제)를 선택합니다 (select * from table active = true)

날짜 필드가있을 수 있고 데이터베이스를 나중에 '풀링'한 날짜 이후에 추가되었습니다. (select * from active = true 및 date-added> # 12 : 30 #)

+0

DataTable 및 DataRow 클래스를 사용하여 새 테이블을 만들고이를 Fill 메서드에 전달하는 것이 더 쉽다고 생각했습니다. 나는 나를 위해 이것을 할 SQL 문을 생각하려고 노력했지만 그것은 활성 열을 보는 것보다 더 복잡 할 것이다. 나는 그룹의 테이블을 가지고 있고 그 그룹에 속한 멤버들의 테이블을 가지고있다. – Ben

+1

@Ben SQL은 강력한 데이터 조작 언어이므로 쉽게 선택한 필드에서 임시 테이블을 만들 수 있으며 다른 테이블을 다른 테이블에도 추가 할 수 있습니다. 아마도 한 걸음 뒤로 물러나 더 큰 그림을 볼 필요가 있을까요? – spacemonkeys

+0

소원 나는 ... 상사와 다른 팀원들이 나를 그렇게하도록 요구할 수있다. – Ben