3
我使用Ormlite插入一條記錄如下:ormlite GetLastInsertId給出指定的轉換無效。錯誤
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;
}
記錄實際上進入數據庫很好,我的第一列是int(11)在mysql數據庫中,並且是第一個名爲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 ;
我用這個ormlite與MySQL中的所有時間,我也永遠不會有這個問題,我留下抓我的頭,第一次,在很長一段時間。
我使用的是nuget包Ormlite.MySQL 3.9.59,它是nuget上最新的包。
這不會是那麼的陌生,如果不是對實際的記錄要在這似乎有一些問題與executeScaler和返回值????
任何幫助在這裏大大讚賞。
我有同樣的問題,並且發現.58版本也有它。以下是我在軟件包管理器控制檯中運行以獲得此工作的信息: Uninstall-Package ServiceStack.OrmLite.MySql; 安裝包ServiceStack.OrmLite.MySql -Version 3.9.57 – Robert
@Robert Thankx分享此...我只是忘記提及卸載依賴關係在'ServiceStack.Ormlite'之前 –
尼斯@Robert版本58上的點不是工作。多謝你們 – davethecoder