2011-09-04 4 views
0

다중 테이블 Access 데이터베이스를 백 엔드로 사용하는 C# 데이터베이스 기반 응용 프로그램이 있습니다. 나는 테이블에 추가하여 여러 개의보기를 사용하여 쉽게 볼 수 있도록 테이블을 다시 포맷합니다. 필자의 관점은 뷰가 데이터 표시 전용이므로 데이터를 변경하는 데 사용해서는 안되며, 특히 외래 키 바인딩이 포함 된 경우에는 사용해야합니다. 나는 이것으로 괜찮아.C#/MSAccess 프로젝트에서 테이블과 뷰를 어떻게 동기화해야합니까?

DataTable Patrons; 
DataTable vPatrons; 

내가 vPatrons와 콤보 상자의 무리와 후원자에 바인딩 된 텍스트 상자에 바인딩 된 DataGridView에 있습니다

그럼 내가 후원자 테이블과 vPatrons보기가 있다고 가정 해 보자. 사용자가 변경을하고 난 후원자 테이블에 대한 변경 사항 커밋 저장 버튼을 칠 때 :

_bindingSource.EndEdit(); 
_tableAdapter.Update(Patrons); 

그래서 지금 내 후원자 DataTable을, 후원자 데이터베이스 테이블 및 vPatrons 데이터베이스보기가 모두 업데이트됩니다. 그러나 여전히 vPatrons DataTable을 업데이트해야합니다!

가 가
_tableAdapter.Fill(vPatrons); 

사람이 테이블과 뷰 동기화에 메모리 유지할 수있는 더 좋은 방법을 알고 있습니까 :이 작업을 수행하는 내가 생각할 수있는 유일한 방법은 나에게 끔찍하게 비효율적 인 것 같습니다 전체 vPatrons의 DataTable을 다시 채우는 것입니다?

답변

0

나는 당신이 너무 복잡하게 생각한다고 생각합니다. 지금은 대답을 추측 하겠지만 테이블과 뷰의 스키마를 보지 않고도 최상의 솔루션을 말하는 것이 쉽지 않습니다. 나는이 객체들이 어떻게 컬럼의 측면에서 얼마나 다른지 알지 못한다.

테이블에서 데이터를 읽고 동일한 데이터를 다른 방식으로 표시해야하는 경우 데이터베이스에서 데이터를 한 번로드하고 DataTable 고객에게 저장해야합니다.

이렇게하면 .NET 측에서 데이터를 사용할 수 있습니다.

이제 UI에 표시하기 위해 어떻게 든 조작 같은 데이터를 필요로하는 경우, 당신이 동일한 데이터 테이블에 연결을 유지할 수있는 .NET 측에서 DataView를 함께 작동합니다, 당신은이 방법을 만듭니다

VAR을 myView = 새 DataView (고객);

이 시점에서보기가 테이블에 연결되어 있으면 필터, 정렬, 표현식 열 추가 등이 가능하며 항상 데이터와 연결되어 있습니다.

데이터베이스의 뷰가 너무 복잡하고 .NET 응용 프로그램에서 이러한 뷰 논리를 다시 만들고 싶지 않다면 테이블 또는 뷰를로드 할 것인지 결정해야합니다. 테이블에 뷰만로드 할 수 있고 ID를 얻은 후에는 특정 update 문을 사용하여 데이터베이스에 업데이트를 보낼 수 있으므로 전체 tableAdapter 저장 작업 만 필요하지는 않습니다.

어느 쪽이든, 당신에게 달려 있지만 실제로 .NET 응용 프로그램의 두 개체를 동기화하지 않아도됩니다 ... (둘 중 하나가 실제로 액세스 권한이있는보기를 채우는 경우에도 두 DataTables입니다).

+0

DataView에 대해 많이 알지 못합니다. 다른 테이블에 대한 외래 키 바인딩을 포함하는 여러 테이블이 있습니다 (예 : Fines.PatronID = Patrons.ID). 후원자 테이블의 일부 열의 Fines 테이블에서 모든 열을 포함하는 DataView를 만드는 방법이 있습니까? –

+0

나는 이것을 위해 DatRelation을 사용해야한다. –

관련 문제