문제

다음과 같은 쿼리가 주어졌습니다.

SELECT table1.field1 FirstField, table2.field2 SecondField
    FROM table1
    INNER JOIN table2 ON table1.FK = table2.PK
    WHERE table1.somefield = 'somevalue';

내 목표는 .Nettiers를 사용하여 강력하게 입력 된 결과 세트를 반환하는 것입니다. 나는보기를 사용할 수 없다고 가정합니다. WHERE 절은보기에 전달할 수없는 매개 변수가 필요합니다. 저장된 절차는 'somevalue'매개 변수를 전달할 수 있지만 약하게 입력 한 것을 반환합니다. DataSet 또는 DataReader.

나는 여기에 개념이 놓친 것 같습니다. 분명히, 내가 원하는 것은 다음과 같은 것을 쓸 수 있다는 것입니다.

TList <some-entity-name> entityList = DataRepository.SomeProvider.Get( "somevalue" );

foreach ( some-entity-name entity in entityList ) {
    DoSomethingWith( entity.FirstField, entity.SecondField );
}

쿼리가 실행 된 후 서버 측 필터와 관련된 솔루션을 피하고 싶습니다. 관련된 테이블은 매우 큽니다.

도움이 되었습니까?

해결책

뷰를 작성하고 강력하게 입력 한 ParameterBuilder 개체를 사용하여 특정 열의 뷰를 필터링하십시오. 이 개체가 어떤 계층에 있는지 기억할 수 없습니다.

이것이 당신이 그것을 사용하는 방법입니다.

MyViewParameterBuilder builder = new MyViewParameterBuilder();
builder.AppendEquals(TableColumn.Column, "value");
DataRepository.MyViewEntityProvider.Find(builder.GetParameters());

나는 틀렸을 수도 있지만, 넷 티어가 실제로 위의 메소드와 함께 tlist/vlist 객체를 필터링 '한다고 생각하지 않습니다. 이것이 객체의 이름이 제안 할 것입니다. 빌더는이 조항을 사용하여 조항과 Nettiers가 데이터베이스에 대해 쿼리를 실행하는 위치를 생성합니다.

두 번째 옵션은 저장된 프로 시저를 생성하는 것이지만 저장된 Proc의 결과 세트가 데이터베이스의 테이블 중 하나의 스키마와 일치하는 경우에만 해당됩니다. 그렇지 않으면 Net Tiers는 이에 대한 방법을 알지 못할 것입니다. 그것에 대해 더 많이 읽을 수 있습니다 여기

다른 팁

가입이있는 tlist 컬렉션을 원한다면 사용자 정의 저장 프로 시저를 만들어야합니다. 여기서 솔루션 : http://benpowell.org/paging-and-sorting-in-a-nettiers-custom-storsed-procedure/

다음과 같은 시나리오가있는 경우 :

  • 계정 (PK AccountID)
  • 클라이언트 (PK ClientID)
  • clientAccount (pk clientId, accountID)

올바른 외국 키 설정이있는 한 .Nettiers는 적절한 방법을 제공합니다.

AccountService s = new AccountService();
TList<Account> accountCollection = s.GetByClientIdFromClientAccount(1);

페이징을 지원하는 과부하 메소드도 있습니다 (슬프게도 Orderby 조항 없음).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top