Dapper 열 이름 대신 열 번호가 필요합니까?

.net dapper

문제

나는 Dapper-dot-net에 "열 이름 없음" 과 매우 비슷한 질문을하지만, 거기에 대한 대답은 내가 필요한 곳을 찾지 못한다.

웹 인터페이스를 작성하고 dapper를 사용하여 클라이언트의 ERP 시스템에서 저장 프로 시저의 데이터를 가져옵니다. SP는 열 이름없이 4 개의 데이터 열을 반환합니다. SP가 잠겨 있고 변경할 수 없다고합니다. Sam이 제안한 쿼리에서 임시 테이블을 사용하여이 문제를 해결하려고했습니다.

var grid = QueryMultiple(@"set nocount on 
declare @t table(Id int, Name nvarchar(max), AnotherId int)

insert @t
exec proc

set nocount off 
select Id, Name from @t
select Id, AnotherId from @t
");

그러나 이제는 원래 SP에 로깅을위한 삽입이 포함되어 있으므로 SQL을 사용하여 sp를 임시 테이블에 삽입 할 수 없습니다.

다음에 대한 지원 추가에 대한 언급이 있습니다.

class Foo { [ColumnNumber(1)] public string Name {get;set;} }

어떻게해야합니까? 누군가가 Dapper 소스를 수정하여 열 이름을 요구하지 않고 열 번호별로 매핑하도록 올바른 방향으로 나를 안내 할 수 있습니까?

수락 된 답변

사소한 바인딩의 문제는 계속 제기되고 있습니다. 가장 최근에 여기에 올랐습니다 : http://code.google.com/p/dapper-dot-net/issues/detail?id=108

비록 내가 아직 그것을 코드화 할 시간이 없었지만 나의 제안은있다. 내가 처리 할 정적 이벤트를 제안하고 원하는 모든 밀교 매핑을 적용합니다. 즉

SqlMapper.ColumnBind += (sender, args) {
    int colIndex = args.ColumnIndex;
    Type type = args.TargetType;
    MemberInfo member = // ... Entirely up to you to define logic
    args.Member = member;
};

위의 내용은 전적으로 이론적이지만 고객의 요구 사항을 충족합니까?

주 : ColumnBind 가 구독되지 않은 경우 정상적인 기본 이름 매핑 만 수행됩니다. 생각?

(참고 : 구독자가 GetProperties 등을 덜 자주 호출하므로 더 효율적일 수 있습니다.) 또한 열 단위가 아닌 유형별로 단일 이벤트 호출 일 수도 있습니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow