PetaPoco Varbinary(max) and IdentityColumn
本文关键字:and IdentityColumn max Varbinary PetaPoco | 更新日期: 2023-09-27 18:20:29
插入varbinary(max)列类型的行后,我无法获得Identity值。这是我使用的代码(根据PetaPoco页面):
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()"。最好的解决方案是什么?
谢谢,Nabu
您确定返回的行数不是最后插入的记录的Id吗?
您可以修改插入语句以包含OUTPUT Inserted.Id,如下所示:
var result = db.ExecuteScalar<int>(@"INSERT INTO ... UPO, XMLFile) OUTPUT Inserted.Id VALUES (@0 ...