Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET中的应用程序崩溃和事务_C#_.net - Fatal编程技术网

C# NET中的应用程序崩溃和事务

C# NET中的应用程序崩溃和事务,c#,.net,C#,.net,假设我有一个处理转账的应用程序 try { transaction.Commit(); } catch { transaction.Rollback(); } 现在,如果必须取消提交,并且由于某种原因程序在处理取消或回滚之前崩溃,会发生什么? 如何对应用程序进行编程,以使其能够抵御程序崩溃 编辑: 如果我没有SQL后端,而事务是我自己实现的呢?只有在提交成功后才能在数据库中实现数据持久化。因此,如果您的提交在任何位置失败,数据都不会写入数据库。您的设计很好(即使是非常简约的设

假设我有一个处理转账的应用程序

try {
    transaction.Commit();
}  catch {
    transaction.Rollback();
}
现在,如果必须取消提交,并且由于某种原因程序在处理取消或回滚之前崩溃,会发生什么? 如何对应用程序进行编程,以使其能够抵御程序崩溃

编辑:
如果我没有SQL后端,而事务是我自己实现的呢?

只有在提交成功后才能在数据库中实现数据持久化。因此,如果您的提交在任何位置失败,数据都不会写入数据库。

您的设计很好(即使是非常简约的设计,没有实际的示例……)

您可以想象,一旦调用
var transaction=connection.BeginTransaction()

如果不调用commit,事务将不会被提交,因此catch将回滚它

如果由于任何原因,崩溃阻止执行捕获块,SQL引擎将应用自动回滚。

您的“假设”将使所有内容无效。。。如果您没有数据库,并且实现了一个名为carrot(或transaction,对我们来说不太清楚)的对象,那么您应该详细说明carrot类的功能、继承内容以及实现方式!!