질문 제목으로, 내 저장된 proc int
및 DateTime
반환합니다 내 클래스가 동일한 정의하는 경우에도 Specified cast is not valid
예외 Specified cast is not valid
.
public class Foo
{
public int Id {get; set;}
public DateTime CreatedDate {get; set;}
}
이 쿼리를 실행할 때 :
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
에서 decimal
및 DateTime
으로 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(); }
}
}