📄 mtstransactions.aspx
字号:
<%@ Register TagPrefix="Acme" Namespace="Acme" Assembly="QSTools" %>
<%@ Register TagPrefix="Acme" TagName="SourceRef" Src="/quickstart/aspplus/util/SrcRef.ascx"%>
<!-- #include virtual="/quickstart/aspplus/include/header.inc" -->
<h4>MTS 事务</h4>
事务是以逻辑单元的形式成功或失败的一个或一组操作。一个典型的事务例子是将资金从一个银行帐户转移到另一个帐户。此例中,必须将资金从第一个帐户借记出来,并贷记到第二个帐户,这样方可认为操作成功。如果资金被成功地借记但没有被贷记,则必须撤销第一个帐户上的借记,以使两个帐户都正确并一致。
<p>
一般通过声明一组操作的边界来管理事务。在事务边界的上下文中执行的操作于是以单元的形式成功或失败。对于 ASP.NET,事务边界是执行对页的单个请求,而该页可能包含参与同一事务的嵌套组件。在页执行期间,如果页本身上的操作或同一事务中的嵌套组件失败,它可以调用 <b>ContextUtil.SetAbort</b>。它随后由当前的事务上下文获取,整个事务失败,并撤消任何已完成的操作。如果未发生失败,则提交事务。
<p>
ASP.NET 事务支持由允许页参与正在进行的 Microsoft .NET 框架事务的能力组成。事务支持通过指示所需支持级别的 <b>@Transaction</b> 指令公开:
<p>
<div class="code"><pre>
<%@ Transaction="Required" %>
</pre></div>
<p>
下表定义了受支持的事务属性。
缺少事务指令与“Disabled”的显式指令相同。与 ASP 不同,ASP.NET 没有对应于 none 的显式指令(即 Transaction="None")。
<p>
<table class="table2" width="90%" cellpadding=3>
<tr>
<th width="20%">属性</th><th width="100%">说明</th>
</tr>
<tr>
<td>
<b>Required</b>
</td>
<td>
页要求事务。如果存在现有事务,它在此事务的上下文中运行。否则将启动一个事务。
</td>
</tr>
<tr>
<td>
<b>RequiresNew</b>
</td>
<td>
页要求事务,并为每个请求启动一个新的事务。
</td>
</tr>
<tr>
<td>
<b>Supported</b>
</td>
<td>
如果存在现有事务,页在此事务的上下文中运行。否则将在无事务的情况下运行。
</td>
</tr>
<tr>
<td>
<b>NotSupported</b>
</td>
<td>
页不在事务范围内运行。处理请求时,无论是否存在活动事务,其对象上下文都在无事务的情况下创建。
</td>
</tr>
</table>
<p>
可使用 <b>System.EnterpriseServices.ContextUtil</b> 类的静态方法显式提交或中止事务。可显式调用 <b>SetComplete</b> 或 <b>SetAbort</b> 方法提交或中止进行中的事务。
<p>
注意:假设没有其他对象与同一事务联接,则事务将在页的生存期结束时提交或中止,具体取决于最后调用的是 SetComplete 还是 SetAbort。
<p>
<Acme:TabControl runat="server">
<Tab Name="C#">
// Try to do something crucial to transaction completing.
if (!DoSomeWork()) {
ContextUtil.SetAbort();
}
</Tab>
<Tab Name="VB">
' Try to do something crucial to transaction completing.
If (Not DoSomeWork())
ContextUtil.SetAbort()
End If
</Tab>
<Tab Name="JScript">
// Try to do something crucial to transaction completing.
if (!DoSomeWork()) {
ContextUtil.SetAbort();
}
</Tab>
</Acme:TabControl>
<p>
<h4><a name="summary">本节小结</a></h4>
<ol>
<li>事务是以逻辑单元的形式成功或失败的一个或一组操作。
<li>ASP.NET 事务支持由允许页参与正在进行的 Microsoft .NET 框架事务的能力组成。事务支持通过指示所需支持级别的 <b>@Transaction</b> 指令公开。
<li>可使用 <b>System.EnterpriseServices.ContextUtil</b> 类的静态方法显式提交或中止事务。开发人员可显式调用 <b>SetComplete</b> 或 <b>SetAbort</b> 方法来提交或中止进行中的事务。
</ol>
<p>
<!-- #include virtual="/quickstart/aspplus/include/footer.inc" -->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -