Dapper插入DateTime值

时间:2017-03-23 09:24:47

标签: c# sql 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; }

现在,insert语句如下:

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

1 个答案:

答案 0 :(得分:1)

我认为这是一个很晚的回应。但是无论如何我昨天都遇到了同样的问题,所以我将解决方案放在这里。您无需在SQL查询中直接CAST datetime。在我的情况下,datetime值超出范围,基本上是01-01-0001 00:00:00,所以导致了错误。确保您传递正确的日期时间值。希望这会有所帮助!