0

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()」は使いたくありません。これを行うための最良の解決策は何ですか?

ありがとう、なぶ

4

1 に答える 1