Sybase ASE에서 강력한 유형의 쿼리 매개 변수를 사용할 때 잘못된 형변환 예외를 던진 Dapper

c# dapper

문제

질문 제목으로, 내 저장된 proc intDateTime 반환합니다 내 클래스가 동일한 정의하는 경우에도 Specified cast is not valid 예외 Specified cast is not valid .

InvalidCastException: Specified cast is not valid.
DataException: Error parsing column 1 (Id=1 - Decimal)

InvalidCastException: Specified cast is not valid.
DataException: Error parsing column 2 (CreatedDate=Mar  7 2012  5:52:08:276PM - String)

이 쿼리를 실행할 때 :

var results = connection.Query ( "spGetFoo", commandType : CommandType.StoredProcedure);

다음 두 가지 예외가 발생합니다.

InvalidCastException: Specified cast is not valid.
DataException: Error parsing column 1 (Id=1 - Decimal)

InvalidCastException: Specified cast is not valid.
DataException: Error parsing column 2 (CreatedDate=Mar  7 2012  5:52:08:276PM - String)

Foo 의 속성을 int 에서 decimalDateTime 으로 string 수정하면 값이 제대로 채워집니다. 그러나 이것은 올바른 변수 유형을 보유하고 Foo 에서 새로운 클래스로 매핑하는 다른 클래스를 정의하는 추가 단계를 소개합니다.

나 또한 Dapper 소스에서 GetTypeDeserializer 를 사용하여 진행하는 것을 시도했지만 IL에 익숙하지 않았습니다.

인기 답변

어쩌면 문제는 저장 프로 시저에 있지만 그 동안에는

public class Foo
{
    private decimal _dbId;
    public decimal DbId 
    { 
        get { return _dbId; }
        set 
        { 
            _dbId = value;
            _id =(int)value;
        }
    }
    private String _dbCreadtedDate;
    public String DbCreadtedDate 
    { 
        get { return _dbCreadtedDate; }
        set 
        {
            _dbCreadtedDate = value;
            _createdDate = DateTime.Parse(_dbCreadtedDate);
        }
    }
    private int _id;
    public int Id 
    { 
        get { return _id; } 
        set { _id = value; _dbId = value; } 
    }
    private DateTime _createdDate;
    public DateTime CreatedDate 
    { 
        get { return _createdDate; } 
        set { _createdDate = value; _dbCreadtedDate = value.ToString(); } 
    }
}



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.