dapper CROD操作を使用しています。
DataTimeフィールドを持つテーブルに新しい行を入力しようとしています。
次のクラスを作成しました:
//Properties
public int Id { get; set; }
public string Title { get; set; }
public string Message { get; set; }
public int UserID { get; set; }
public DateTime CreationDate { get; set; }
public DateTime UpdateDate { get; set; }
public DateTime ActiveStartDate { get; set; }
public DateTime ExpirationDate { get; set; }
現在、挿入ステートメントは次のとおりです。
public static string InsertNewMessage
=> @"INSERT INTO Messages
(Title,[Message],UserID,CreationDate,UpdateDate,ActiveStartDate,
ExpirationDate)
VALUES (N'@Title',N'@Message',@UserID,CAST('@CreationDate' as
DATETIME),CAST('@UpdateDate' as DATETIME),
CAST('@ActiveStartDate' as DATETIME)
,CAST('@ExpirationDate' as DATETIME))
SELECT CAST(SCOPE_IDENTITY() as int)";
int returnId = _db.Query<int>(QueriesRepository.InsertNewMessage,
_message).SingleOrDefault();
今、私が間違っていること-私は次のエラーの解決策のためにウェブを掘りました-運がなければ、問題はDateTimeオブジェクトのフォーマットであることがわかりますが、Dapperがそれをサポートする必要があることがわかりました。
Conversion failed when converting date and/or time from character string
かなり遅い応答だと思います。しかし、とにかく昨日同じ問題に直面したので、ここに解決策を載せます。 SQLクエリで日時を直接キャストする必要はありません。私の場合、datetime値は範囲外でした。基本的には01-01-0001 00:00:00であったため、エラーが発生しました。必ず正しい日時値を渡すようにしてください。お役に立てれば!