여기에는 프로덕션 데이터베이스와 테이블 및 뷰를 연결하는 프로젝트가 있습니다. 상속 한 코드는 사용자가 제공 한 자격 증명과 데이터베이스에서 제공하는 데이터베이스 위치를 사용하여 SqlConnection을 통해 SQL Server 데이터베이스에 연결합니다. 데이터가 필요할 때 연결 및 SQL 문자열을 사용하여 SqlDataAdapter를 만들고 새 DataSet을 채 웁니다. 그런 다음 데이터를 조작 한 후 테이블 열 이름을 적절한 표시 이름으로 바꾸고 표시합니다.C#의 동적 데이터베이스 바인딩
문제는 전체 프로세스가 느리고 케이크 위에 장식하면 많은 데이터가 ListView에 표시된다는 것입니다.이 데이터는 1 만 개의 데이터 행을 가져 오는 데는 적절하지 않습니다. 설계상의 이유로, 우리는 페이지를 열지 않을 것입니다. 검색 컨트롤이 있습니다. 그리고 가상의 ListView를 구현하여 제가 어디에 있었는지 간단하게 되돌릴 수 있습니다. 나는 이것이 단순히 ListView에 대한 잘못된 응용 프로그램이라고 생각합니다. 데이터베이스에 연결하고 레코드를 표시하고 있습니다. DataGridView에 대한 작업처럼 들립니다.
슬프게도, 단순히 은 작동하지 않습니다.. DataBridView를 DataBinder를 통해 연결 코드에서 가져온 DataSet에 바인딩하려고합니다. 그러나 DataGridView가 완전히 비어있는 동안 데이터가 DataSet에있는 것처럼 보입니다.
그러나 현재 데이터베이스 스키마와 내 자격 증명을 사용하여 테스트 데이터베이스에서 GUI 바인딩을 사용하면 치료가 효과적입니다. 하지만 충분히 유연하지 않기 때문에이 자료를 사용할 수 없습니다. 데이터베이스를 업데이트 할 때마다 변경해야하는 코드에서 스키마를 정의하고 싶지 않고 연결 문자열에 대한 액세스가 필요합니다. 생성 한 TableAdapter에서 가져 오는 것 같지 않습니다.
DataSet/BindingSource 솔루션 작업을 수행하기 위해 여기에 간단한 항목이 누락 되었습니까? 내가 틀린 나무를 짖고 있니?
어쨌든 구속력을 발휘할 가치가 있습니까? 내가 볼 수있는 모든 바인딩 물건은 저에게 90 %의 방법을 가져다 주지만, 연결 문자열을 수정할 수 없거나 원하는 방식으로 특정 열을 정렬 할 수없고, 정의 된 스키마를 제공하고 싶습니다. 손으로 쓴 코드는 최소한 방어 적으로 설계되고 매우 유연하지만 데이터베이스가 변경되는 즉시 중단 될 것입니다. 기능을 제거하지 않고 느린 솔루션이 이미 작동합니다. 작동하도록 일부 요구 사항을 포기해야한다면 우리가 가진 것을 처리 할 것입니다.
아, 이쪽이 나를 더 멀리 잡았어. 이제 BindingSource가 작동합니다. (DataGridView는 BindingSource를보고 있지만 아무 것도 만들지 않았기 때문에 아무 것도하지 않습니다.) – Merus