我有問題,以varbinary(max)列類型插入行後獲得身份值。下面是(根據PetaPoco Page),我使用的代碼:PetaPoco Varbinary(最大值)和IdentityColumn
using (var uow = UnitOfWorkFactory.Create())
{
var result = uow.Db.Execute(@"INSERT INTO LOG_EXPORT (DateTime, FileName, FileSize, FormatID, Lines, Login, UPO, XMLFile)
VALUES (@0, @1, @2, @3, @4, @5, @6, @7)", logExport.DateTime, logExport.FileName, logExport.FileSize, logExport.FormatID, logExport.Lines, logExport.LogExportId, new SqlParameter() { SqlDbType = SqlDbType.VarBinary, Value = DBNull.Value }, new SqlParameter() { SqlDbType = SqlDbType.VarBinary, Value = DBNull.Value });
uow.Commit();
return result;
}
它返回所返回的行的數目。我想有相同的結果,當我使用:
var result = uow.Db.Insert(logExport);
uow.Commit();
return result;
我也曾嘗試使用:
var result = uow.Db.ExecuteScalar<int>("SELECT SCOPE_IDENTITY()");
uow.Commit();
return result;
但我得到了一個錯誤。我不想使用「SELECT max()」。什麼是最好的解決方案呢?
感謝, 拿捕淨
使用時,你做你的'INSERT'選擇你想要的'OUTPUT'條款。請參閱http://msdn.microsoft.com/en-us/library/ms177564.aspx – Zer0 2014-09-03 20:12:06
感謝您的回答!不幸的是既沒有PetaPoco Db.Execute或Db.Query可以處理OUTPUT子句... –
Kamil
2014-09-03 20:41:24