PetaPoco Varbinary(最大)和IdentityColumn

时间:2014-09-03 20:05:01

标签: c# identity petapoco varbinary varbinarymax

插入带有varbinary(max)列类型的行后,我有问题获取Identity值。这是我使用的代码(根据PetaPoco Page):

 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()”。这样做的最佳解决方案是什么?

谢谢, 拿捕净

1 个答案:

答案 0 :(得分:1)

您确定要返回的行数不是最后插入记录的ID吗?

您可以修改insert语句以包含OUTPUT Inserted.Id,如下所示:

  var result = db.ExecuteScalar<int>(@"INSERT INTO ... UPO, XMLFile) OUTPUT Inserted.Id  VALUES (@0 ...