servicestack ormlite GetLastInsertId指定的强制转换无效。错误,servicestack,ormlite-servicestack,servicestack,ormlite Servicestack" /> servicestack ormlite GetLastInsertId指定的强制转换无效。错误,servicestack,ormlite-servicestack,servicestack,ormlite Servicestack" />

servicestack ormlite GetLastInsertId指定的强制转换无效。错误

servicestack ormlite GetLastInsertId指定的强制转换无效。错误,servicestack,ormlite-servicestack,servicestack,ormlite Servicestack,我正在使用Ormlite插入一条记录,如下所示: public static Address Add(Address model) { using (IDbConnection db = DbFactory.OpenDbConnection()) { db.Insert(model); var lastId = db.GetLastInsertId();

我正在使用Ormlite插入一条记录,如下所示:

public static Address Add(Address model)
    {
        using (IDbConnection db = DbFactory.OpenDbConnection())
            {
                db.Insert(model);
                var lastId = db.GetLastInsertId();
                model.Id = (int) lastId;
                return model;
            }
    }
但是在
var lastId=db.GetLastInsertId()行上

我得到以下错误:

Message: Specified cast is not valid.

Source: ServiceStack.OrmLite

Stacktrace: at ServiceStack.OrmLite.OrmLiteReadExtensions.GetLongScalar(IDbCommand dbCmd) in c:\src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\OrmLiteReadExtensions.cs:line 793
at ServiceStack.OrmLite.ReadConnectionExtensions.Exec[T](IDbConnection dbConn, Func`2 filter) in c:\src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\Expressions\ReadConnectionExtensions.cs:line 31
这指向以下ormlite代码:

public static long GetLongScalar(this IDbCommand dbCmd)
    {
        var result = dbCmd.ExecuteScalar();
        if (result is DBNull) return default(long);
        if (result is int) return (int)result;
        if (result is decimal) return Convert.ToInt64((decimal)result);
#### this line here is 793 if (result is ulong) return Convert.ToInt64(result);
        return (long)result;
    }   
该记录实际上很好地进入了数据库,我的第一列是mysql数据库中的int(11),是第一个名为Id的列

模式:

CREATE TABLE IF NOT EXISTS `Address` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
  `Street` varchar(255) NOT NULL,
  `StreetTwo` varchar(255) DEFAULT NULL COMMENT 'Street 2:',
  `Town` varchar(100) DEFAULT NULL,
  `City` varchar(100) NOT NULL,
  `County` varchar(255) DEFAULT NULL,
  `Country` varchar(255) DEFAULT NULL,
  `PostCode` varchar(15) DEFAULT NULL COMMENT 'Post Code:',
  `Notes` text,
  `Enabled` tinyint(1) NOT NULL DEFAULT '1',
   PRIMARY KEY (`Id`)
 ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;
我一直在mysql中使用这个ormlite,我从来没有遇到过这个问题,很长一段时间以来,我第一次感到头疼

我使用的是nuget包Ormlite.MySQL 3.9.59,它是nuget上可用的最新包

如果不是真的有记录的话,这就不会那么奇怪了。这似乎是executeScaler和返回值的一些问题


非常感谢您的帮助。

我认为此版本的
ServiceStack.Ormlite
存在一些问题。我能够复制这个问题。它只需使用以前的版本即可工作

您可以使用Nuget数据包管理器控制台安装以前的版本。在这种情况下,如果您不知道如何使用数据包管理器控制台安装旧版本,则如下所示:

Install-Package Package-Name-Here -Version Version-You-Want-To-Install

我也有同样的问题,发现.58版本也有。以下是我在PackageManager控制台中运行以使其工作的内容:卸载PackageServiceStack.OrmLite.MySql;安装ServiceStack.OrmLite.MySql包-版本3.9。57@Robert谢谢分享这个。。。我只是忘了在58版也不起作用的情况下,在
ServiceStack.Ormlite
nice1@Robert之前卸载依赖项。谢谢各位