2012-03-07 2 views
2

質問タイトルには、intと、DateTimeが返されても、私はSpecified cast is not valid例外を返しています。Sybase ASEで厳密に型指定されたクエリパラメータを使用すると無効キャスト例外がスローされる

VAR結果= connection.Query( "spGetFoo"、CommandTypeを:CommandType.StoredProcedure)私はこのクエリを実行

public class Foo 
{ 
    public int Id {get; set;} 
    public DateTime CreatedDate {get; set;} 
} 

は、私は、次の2つの例外を取得:それは適切な値を移入

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 stringから decimalにして DateTime。しかし、これは正しい変数の型を保持している別のクラスを定義し、新しいクラスに Fooからマッピングする余分なステップを紹介します。

は私も何が起こっているのか確認するためにDapperのソースにGetTypeDeserializerを通過しようとしたが、私は放出ILに非常に精通していませんよ。

+2

を使用することができますあなたはspGetFooはint型と日時として返しますよろしいですか?あなたはSQLと多分列定義を表示できますか? –

+0

確かに、Stored Procを見てうれしいですね。 –

答えて

1

多分問題は、ストアドプロシージャにありますが、その間にあなたは

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(); } 
    } 
} 
関連する問題