【问题标题】:C# Insert all rows or none?C#插入所有行还是不插入?
【发布时间】:2013-02-22 17:51:08
【问题描述】:

我已经完成了简单的 My sql 事务。但是有没有办法通过 c# 进行交易?

示例:

插入文件中的所有行或从不插入任何内容。

在 c# 中是否有任何示例或说明可以做到这一点?我只通过参数化的 c# 语法执行了单个查询。写一个删除查询我认为是矫枉过正,不适合我的需要。

【问题讨论】:

标签: mysql transactions c#-2.0 rollback


【解决方案1】:

当然。

如果您在 MySQL 中使用实体框架,SaveChanges() 将在事务中执行。它要么全部成功,要么全部失败(如果需要,您可以使用TransactionScope 更好地控制该方面)。

使用 ADO.Net,您可以使用TransactionScope,如下所述:

https://stackoverflow.com/a/3321030/141172

TransactionScope 也适用于 DataTable

http://www.codingbeaver.com/myblog/2010/02/19/update-datatable-in-transaction/

【讨论】:

  • 您好,非常感谢。看起来真的很有希望。另外,当我搜索时,我遇到了数据表。它是否提供相同的功能?你能评论一下 TransactionScope 在 DB 上的成本吗?它是否像'我将插入你所有的行。让我看看..哎呀!一个例外。现在我必须回滚所有内容 :(" - 我想这就是它在内部发生的方式。或者“嘿!我可以聪明地回滚” - 我不知道这个聪明怎么可能:)
  • 您可以将 TransactionScope 与 DataTables 一起使用(带有链接的更新帖子)。使用事务是有成本的。除非您有数千行,否则很难在大多数应用程序的宏大方案中进行测量。 使用事务的代价可能很严重(数据损坏)。根据经验,如果我有很多行要插入并且由于某种原因不能使用更优化的解决方案,例如 SqlBulkCopy,我将插入 1000 个块中的事务(假设应用程序可以容忍前 1000 个被插入但不能接下来的 1000 个)。
猜你喜欢
  • 1970-01-01
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 2021-07-13
  • 2020-02-02
  • 1970-01-01
相关资源
最近更新 更多