2013-02-18 2 views
3

Я пытаюсь сделать следующее:Как вставить DateTime (или DateTime2) с Dapper?

var p = new DynamicParameters(); 
p.Add(...); 
p.Add(...); 
// ideally I want to insert null for end date, but I also tried DateTime.MinValue 
// or some other date, but doesn't help 
p.Add("@endDate", null, DbType.DateTime, ParameterDirection.Input); 
using (var con = new SqlConnection(ConnectionString)) 
{ 
    // stored procedure does 'select SCOPE_IDENTITY()' to return the id of inserted row. 
    int id = con.Query<int>("StoredProcedureName", p, commandType: CommandType.StoredProcedure).First(); 
} 

Это бросает «InvalidCastException», и я считаю, что это Becase на дату. Я ранее имел datetime2 (20) для endDate в sql db, изменил его на datetime, чтобы узнать, исправляет ли он его, но не делает этого. Может ли кто-нибудь помочь?

ответ

2

Недействительный литой здесь то, что SCOPE_IDENTITY() фактически возвращает decimal. Параметры работают нормально.

+0

Благодарим вас за быстрый ответ. Я искал проблемы, связанные с dapper, и нашел некоторое обсуждение SCOPE_IDENTITY(), но я не обратил достаточного внимания, чтобы понять, что это связано с этой проблемой. – Shankar

 Смежные вопросы

  • Нет связанных вопросов^_^