错误“使用dapper将数据插入数据库时​​发生”不允许从数据类型sql_variant到datetime的隐式转换“

时间:2017-05-18 04:01:24

标签: c# dapper

我有一个带有方法

的存储库类
using Dapper;
public int Execute(string query, object arguments)
    {
        return Connection.Execute(query,arguments);
    }

在另一个程序中,我尝试运行插入查询。

dbOps.Execute(qry, new
                            {
                                transType = unp.TransType,
                                itemCode = unp.ItemCode,
                                itemQty = unp.ItemQty,
                                itemUM = unp.UnitMeasure,
                                itemSite = unp.ItemSite,
                                itemLoc1 = unp.ItemLocation1,
                                itemLoc2 = unp.ItemLocation2,
                                transRmk = unp.TransRmks,
                                transEffDate = unp.TransEffDate, //is DateTime
                                transDate = unp.TransDate, //is DateTime
                                cimStatus = unp.CimStatus,
                                cimBatchNo = unp.CimBatchNo,
                                transID = unp.TransID,
                                cimLoadDate = unp.CimLoadDate
                            });

unp课程:

internal class unp
    {
        public string TransType { get; set; }
        public string ItemCode { get; set; }
        public decimal ItemQty { get; set; }
        public string UnitMeasure { get; set; }
        public string ItemSite { get; set; }
        public string ItemLocation1 { get; set; }
        public string ItemLocation2 { get; set; }
        public string TransRmks { get; set; }
        public DateTime TransEffDate { get; set; }
        public DateTime TransDate { get; set; }
        public byte CimStatus { get; set; }
        public string CimBatchNo { get; set; }
        public string TransID { get; set; }
        public object CimLoadDate { get; set; }

        public string SourceFile { get; set; }
        public string JournalId { get; set; }
    }

查询字符串:

string qry = @"INSERT INTO [Transaction]
                                 VALUES(@transType,@itemCode,@itemQty,@itemUM,@itemSite,@itemLoc1,@itemLoc2,@transRmk,
                                 @transEffDate,@transDate,@cimStatus,@cimBatchNo,@transID,@cimLoadDate)"

我得到一个例外:

  

不允许从数据类型sql_variant到datetime的隐式转换。使用CONVERT函数运行此查询。

任何想法我都可以解决这个问题?或者我是否必须将Dapper强加给多个项目?

2 个答案:

答案 0 :(得分:2)

试试这个。

将CimLoadDate的类型从对象类型更改为DateTime。因为它是数据库中的dateTime

public Datetime CimLoadDate { get; set; }

答案 1 :(得分:-1)