2014-09-18 2 views
0

포코 (POCO)에 대해 배우고 있으며 많은 개념이 마음에 들지만 나는 그것을 얻지 못하고 있다고 생각합니다.페타 포코 (Peta poco) 열 캐싱 문제

나는 다음과 같은 문제가있다 :

나는 동적으로 특정 조건에 따라 SPROC 내부에 구축이 컬럼에 대해 여러 열 및 값을 반환 하나의 sproc 있습니다. I 그러므로, 이러한 동적 인 열에 대한 클래스를 생성 기울어

Id -- Provider Name -- Provider Type 
5  C. A    hospital   

입력 반환되어야 아래 결과 중 하나에 기초

1)

Id -- Name -- Age 
    1  Peter 25 
    2  Janit 53 

2) 나는 동적 객체와 POCO DB를 사용하여 레코드를 가져온다. 누군가가 다음 결과를 다른 매개 변수를 사용하여 함수를 호출 POCO 우선 호출 열 정보를 유지하고 소망 한 검색 결과 때

List<dynamic> list = db.fetch<dynamic>(sql); 

문제가 발생.

Id -- Name -- Age 
    5  C. A  hospital   

이 불일치로 인해 런타임 오류가 발생합니다.

이 문제를 해결할 수 있습니까? 또는 이러한 종류의 시나리오에 대해 클래스를 정의하는 방법은 무엇입니까?

희망 사항을 자세히 설명했습니다.

답변

0

단지 결과를 얻기 위해 POCO 클래스를 정의 할 수 있습니다. 나는 그것들을 많이 사용한다. PetaPoco는 SP가 반환하는 필드 만 채 웁니다.

+0

감사합니다. 너는 나를 위해 한 가지 예를 들어 주시겠습니까? 사실 내 개체에 대한 POCO 클래스를 만들 때 SPROC에서 동적 열을 반환하므로 다른 결과 집합을 지원하지 않습니다. 때로는 다른 이름과 다른 개수로. 그 이유는 List 개체를 사용하여 데이터를 가져 오는 것입니다. 여기서 문제는 첫 번째 가져 오기가 열 정보를 메모리에 보유한다는 것입니다. – user1182370

0

이 같은 방식으로 동적 SP에서 반환 될 것으로 예상 모든 열이있는 POCO 만들기 다음

List<PocoName> list = db.fetch<PocoName>(sql); 

때마다 당신을 다음과 같이

public class PocoName  
{ 
    public int Id {get; set;} 
    public string Name {get; set;} 
    public int Age {get; set;} 
    public string ProviderName {get; set;} 
    public string ProviderType {get; set;} 
    ... 
} 

그런 다음 함수를 호출 다른 입력 매개 변수를 사용하여 sproc을 실행하면 sproc에서 반환 한 열만 POCO에 채워집니다.

+0

이 구조에는 몇 가지 문제가 더 있습니다. 1) 나는 60 개가 넘는 컬럼에 7 개의 다른 SPROC가 있습니다. 2) "Provider
Type"과 같은 열 이름이 거의 없으며이 방식으로 열을 표에 표시하는 기존 구성입니다. 어떻게 처리할까요? 다른 동적 접근 방식이 있습니까? – user1182370