SQL 服务器事务回滚或使用 Petapoco 提交?

SQL Server Transaction rollback or commit using Petapoco?

我有使用 Asp.Net 在事务中插入数据库的行列表。但它不会完全承诺。这意味着只插入最后几行。

我的代码是:

using (PetaPoco.Database db = new Database("Mydb"))
{
    using (var trn = db.GetTransaction())
    {
        foreach(var r in rowlist)
        {
          db.Save(r);
        }

        trn.Complete();
    }
}

例如 rowlist 有 20 个元素,但是一些第一个元素不是使用 Petapoco 插入的。但这种情况很少发生,这意味着网络连接非常慢。

我认为问题不在于交易或 Petapoco。

两个猜测:

  1. 可能是因为网速慢导致列表没有完整发布?
  2. 您是否知道 db.Save 根据对象配置和 ID 值更新或插入?也许最后的记录比第一个插入的记录更新