2010-06-13 4 views
0

프로젝트에 입력 된 데이터 세트가 있습니다. 모든 행 대신 단 하나의 행으로 데이터 테이블을 채우고 싶습니다. 선택한 행은 기본 키 열을 기반으로해야합니다. 디자이너 코드를 수정하여이 기능을 구현할 수 있음을 알고 있습니다.하지만 디자이너에서 코드를 변경하면 나중에 디자이너를 통해 데이터베이스를 업데이트 할 때이 코드가 삭제 될 위험이 있습니다.입력 된 데이터 세트로 작업 할 때 하나의 행 선택

그래서 SelectCommand을 디자이너가 아닌 MyTypedTableAdapter.Fill 메서드를 실행하기 전에 변경하고 싶습니다. 이상한 점은 디자이너가 SelectCommand을 만들지 않는다는 것입니다. 다른 모든 명령을 작성하지만이 명령은 작성하지 않습니다. 그것은 완벽는 거리가 멀다

this.operatorzyTableAdapter.Adapter.SelectCommand.CommandText += " WHERE MyColumn = 1"; 

하지만이어야 나는 디자이너의 작품을 수정할 필요가 없습니다 것입니다 : 그것은 SelectCommand를 작성한다면 나는이 방법으로 그것을 변경할 수 있습니다. 불행히도 내가 말했듯이 SelectCommand은 생성되지 않았다. 대신 디자이너는 다음과 같은 것을 만듭니다.

[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
private void InitCommandCollection() { 
    this._commandCollection = new global::System.Data.SqlClient.SqlCommand[1]; 
    this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); 
    this._commandCollection[0].Connection = this.Connection; 
    this._commandCollection[0].CommandText = "SELECT Ope_OpeID, Ope_Kod, Ope_Haslo, Ope_Imie, Ope_Nazwisko FROM dbo.Operatorzy"; 
    this._commandCollection[0].CommandType = global::System.Data.CommandType.Text; 
} 

제 생각에는 말이되지 않습니다. UpdateCommand, InsertCommandDeleteCommand을 생성하지만 SelectCommand을 생성하지 않는 이유는 무엇입니까? 나는 이것으로 참을 수 있었다. 그러나 this._commandCollection는 개인이다. 그래서 나는 클래스 코드의 바깥쪽에 그것을 접근 할 수 없다.

디자이너의 코드를 변경하지 않고이 컬렉션에 들어가는 법을 모르겠습니다. 내가 가지고있는 아이디어는 부분 클래스 정의를 통해 컬렉션을 노출하는 것입니다. 그러나 많은 유형의 데이터 세트를 소개하고자하며 각 클래스에 대한 부분 클래스 정의를 만들고 싶지 않습니다.

.NET 3.5를 사용하고 있습니다.

나는 개인 속성에 액세스하는 방법에 대한 this 기사를 발견했습니다 그러나 당신의 시간을 .NET 4.0

감사에 관한 것이다.

답변

1

데이터 집합 디자이너에서 먼저 기본 (모든 행) 쿼리를 사용하여 테이블/어댑터 쌍을 구성합니다. 그것이 작동하고 업데이트/삭제 등을 확인하십시오.

그런 다음 "쿼리 추가"를 마우스 오른쪽 단추로 클릭하고 "Where MyId = @Id"를 포함하도록 SQL 텍스트를 변경하십시오. 같은 열을 유지해야합니다. 다음을 선택하고 생성 된 메소드 "FillById()"를 호출하십시오.

물론 올바른 위치에서 Fill() 대신 FillById (id)를 사용하십시오.

+0

감사합니다. Henk. 그건 가능 하겠지만, 모든 데이터 세트에 대해 그렇게해야 할 것입니다. 한 가지 더 말씀해 주시겠습니까? 몇 시간이 지나면 데이터 세트를 자동으로 업데이트하는 방법이 있습니까 (테이블 구조가 변경됨). 그렇다면 어떻게해야합니까? – Wodzu

관련 문제