<html>
<head>
<title>ObjectContext IuWFNg</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div id="">
<table cellpadding="0" cellspacing="0" border="0" width="100%" class="main">
<tr>
<td valign="top" class="NAME">ObjectContext IuWFNg</td>
<td valign="top" class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td valign="top" colspan="2" class="description">


<p><!--<primary>ObjectContext
object</primary>--> <!--<primary>transactional
scripts</primary>--> <!--<primary>events</primary><secondary>ObjectContext
object</secondary>-->o[W 2.0  ASP (Active Server Pages : ANeBuT[o[y[W) ̏dvȋ@\́AgUNVXNvg쐬ł邱ƂłB̃XNvg̓́A̍\R[hZOgׂăO[vƂĊSɐ܂͎s邱ƂłBƂ΁Â悤ȃXNvggpƁAR[h 1 ̃ZNVō݌Ƀe[u烌R[h폜A2 Ԗڂ̃ZNVŃR[h̔Oe[uɒǉł܂BAR[h̗ZNVȂAXNvgg͐܂B݌ɃR[h̍폜܂͔̔R[h̒ǉsƁAXNvgg͎s܂Bǂ̃vZX[obN܂B܂A폜ꂽR[h͌ǂf[^x[XɒǉAǉꂽ̔R[h͔̔Oe[u폜܂B1 ̂܂Ƃ܂ƂĐ܂͎sP̃gUNVPʂ̒ɁA̋@\邱̋@\́AASP AvP[V\͂̏dvȉǓ_łBȑÕgUNV́Aׂăf[^x[X̃gUNVT|[gɈˑĂ܂B</p>




<p>ASP AvP[ṼgUNV́A
<!--<primary>Microsoft Transaction
Server</primary>--> <!--<primary>MTS (Microsoft
Transaction Server)</primary>-->
<!--<primary>Microsoft Transaction
Server</primary><seealso>ObjectContext object</seealso>-->
<!--<primary>MTS (Microsoft Transaction
Server)</primary><seealso>ObjectContext
object</seealso>-->Windows 2000 COM+ Component Services ܂ Windows NT  Microsoft Transaction Server (MTS) Ő䂳܂BBackOffice XC[gɑ邱̐igpƁAR[eBOꂽׂẴf[^x[XANV𐧌ł܂BgUNVXNvg̃T|[ǵAIIS  Personal Web Server ɑgݍ܂ĂAʂȃZbgAbv͕svłBCOM+ Component Services ܂ ASP 2.0  MTS gUNVT|[gȂꍇAAvP[Vł́AׂẴf[^x[XύX蓮ŒǐՂAׂẴf[^x[XANVƂŃ[obNāA}`[U[sȂǂ̖ǗKv܂BMTS ܂ COM+ Component Services ł́AAvP[V̐ڑ̃f[^x[X Microsoft SQL Server ł邩AX/Open R\[VA XA vgRT|[gĂA킸̃R[eBOǉ邾łT|[gł܂B܂At@CANV͂܂T|[gĂȂAȂƂIɃT|[gĂȂƂɂȂ܂B</p>




<p>ASP ɂgUNṼT|[ǵAObjectContext IuWFNggpăR[eBO܂B̃IuWFNǵACOM+ Component Services g̎ۂ ObjectContext IuWFNg\܂BObjectContext IuWFNg̃\bhĂяoÃCxgR[eBO邱ƂŁA킸̃R[hsǉ邾ŃgUNVXNvg쐬ł܂B</p>




<p>̃y[W̃XNvgׂĂgUNVƐ錾ɂ́ÃR[hsXNvg̐擪sɒǉ܂B</p>




<span class="PROGRAMLISTING"><pre>&lt;%@ TRANSACTION = Required %&gt;</pre></span>




<p><span class="LITERAL">TRANSACTION</span><!--<primary>TRANSACTION
directive</primary>--> ASP fBNeBȕڍׂɂẮA<link linkend="ch11-1-fm2xml"> 11 </link>QƂĂBŏdvȂƂ́A̍sXNvg̐擪sɂ邱ƂłB̍sǉƁAWeb T[o[ɑ΂āAComponent Services gpăXNvg 1 ̂܂Ƃ܂ƂĐ܂͎s悤ɒʒm܂B</p>




<p><!--<primary>committing transactions</primary>-->
<!--<primary>aborting transactions</primary>-->
<!--<primary>SetComplete method
(ObjectContext)</primary>--> <!--<primary>SetAbort
method (ObjectContext)</primary>-->gUNVR~bg܂͒fɂ́Aꂼ ObjectContext IuWFNg SetComplete \bh܂ SetAbort \bhĂяo܂BComponent Services ŃT|[gĂȂR[h̃ZOg (Ƀt@CANV) ܂ޕGȃgUNVꍇAObjectContext Cxg
<!--<primary>OnTransactionCommit event
(ObjectContext)</primary>-->
<!--<primary>OnTransactionAbort event
(ObjectContext)</primary>-->OnTransactionCommit  OnTransactionAbort ɓʂɂ̃ANVR[eBOł܂B̃\bhƃCxgvV[ŴׂĂ̗ɂẮA{͂̌̃t@XZNVQƂĂB</p>




<!--
<p class="TITLE">ObjectContext Object Summary</p>




<dl>
<dt>Properties</dt>
<dd><p>None</p></dd>





<dt>Collections</dt>
<dd><p>None</p></dd>







<dt>Methods</dt>
<dd><p>SetAbort</p>




<p>SetComplete</p>
</dd>




<dt>Events</dt>
<dd><p>OnTransactionAbort</p>





<p>OnTransactionCommit</p>
</dd>

</dl>

-->
</td></tr>
</table>
</div>
<div id="CommentsTroubleshooting">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
RgуguV[eBO</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2">&nbsp;</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">

<p><!--<primary>comments and
troubleshooting</primary><secondary>transactional
scripts</secondary>-->݂̂ƂAgUNVXNvg쐬ہA 2 ̔ɏdvȐ܂B</p>

<ul><dd><p>f[^x[XANV̂݃T|[gĂACOM+ Component Services ܂ MTS ł́AXA vgRT|[gĂ SQL Server ƃf[^x[X̂݃T|[gĂ܂B</p></dd><dd><p>gUNV͕ ASP y[Wɂ܂邱Ƃł܂B̂߁Ay[W̍쐬ɂ͏\ȒӂKvłBy[Wɂ́AgUNVŕKvȂׂẴANVw肵܂A܂傫ăy[W̏xȂȂ悤ɂKv܂B</p></dd></ul>
<p>gUNVŃf[^x[XANV̈ꕔ܂ׂ͂ĂƎ̃T[o[R|[lg쐬ꍇÃR|[lg MTS pbP[Wɓo^Kv܂BMTS gUNVT|[ĝ́AR|[lgo^Ăꍇ݂̂łBɁAƎ<!--<primary>library packages,
custom</primary>--> <!--<primary>custom library
packages</primary>-->CupbP[W쐬KvAR|[lg IIS In-Process pbP[WɊ܂߂Ȃ悤ɂKv܂BJX^CupbP[ẂA ASP AvP[VŎgpłAASP DLL ƓvZXŎs܂B܂ACupbP[WZbgAbvƁAR|[lgł̃pbP[W<!--<primary>pooling library
packages</primary>-->v[āAAvP[Vōėp邱Ƃł܂B̃v[ MTS łǗł܂BR|[lgT[o[pbP[Wɒǉ邱Ƃł܂AꂪKvȂ̂́A[x[X̃gUNV܂̓[gRs[^ŎsgUNVɑ΂Ă݂̂łB
</p>




<p>ObjectContext IuWFNgƃT[o[R|[lg̏ڍׂɂẮAO'Reilly Дs Shelley Powers <citetitle>wDeveloping ASP Componentsx</citetitle>QƂĂB</p>



<p class="footnote"> 



<p><!--<primary>transactions, object scope
and</primary>-->
<!--<primary>scope</primary><secondary>transactional
objects</secondary>--> <!--<primary>application-level
scope</primary><secondary>transactional objects
and</secondary>--> <!--<primary>global
variables</primary><secondary>transactional objects
and</secondary>--> <!--<primary>ObjectContext
object</primary><secondary>object scope
and</secondary>-->gUNVœ쒆̃IuWFNg<!--<primary>session-level
scope</primary><secondary>transactional objects
and</secondary>-->ZbV܂̓AvP[Vx̃XR[vw肵ȂłBgUNV̍ŌɁAgUNVIuWFNgɂȂ邽߂łB̂悤ȃIuWFNgɃZbV܂̓AvP[ṼXR[vw肷ƁAgUNVǏĂяosAG[܂B</p>




<p>gUNV̓f[^x[XANVɑ΂Ă̂݃T|[gĂ܂AOnTransactionCommit  OnTransactionAbort ̃CxgvV[WɃR[hǉāAf[^x[XȊO̓Ǝ̃gUNVT|[gł܂BƂ΁ÃCxgvV[W̃R[hgpƁAwgUNV̐܂͎sɁAt@CVXeɑ΂ăt@C݂̏܂͍폜ȒPɍsƂł܂B</p>




<p>ObjectContext ́AASP ăANZXł郁\bhȊO 6 ̃\bhJ܂BÃ\bhɃANZXł̂́ACOM+ Component Services ܂ MTS ŊǗT[o[R|[lg̃R[hoR݂̂̂߁Ał͐܂B</p>




<p>gUNVXNvǵAASP ɑ΂ɏdvȒǉ@\łBActiveX Data Objects ̎gpɂĂ̂݃f[^x[XgUNVɃANZXłꍇłAŔɏdvŖɗ@\łBAJX^T[o[R|[lg쐬ƁAGŋ͂ȃgUNV쐬ł܂B</p>
</td>
</tr>
</table>
</div>
<div id="SetAbort">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
SetAbort</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">ObjectContext.SetAbort</span>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>SetAbort method
(ObjectContext)</primary>--> <!--<primary>aborting
transactions</primary>--> <!--<primary>ObjectContext
object</primary><secondary>method and event
reference</secondary>-->gUNVŜ𒆒f܂B̃\bhĂяoƁAXNvg̏ς݂܂͖̃R[hɖ֌WɁAgUNV͕sŏI܂B</p>




<p>̃\bh́AgUNV̎w肳ꂽ̊eXgɃXNvgŎgp邩AMTS ܂ COM+ Component Services ǗT[o[R|[lgŌĂяoƂł܂BSetAbort ĂяoƁAgUNV̊Ɏsꂽ[obNAXNvg ObjectContext_OnTransactionAbort CxgvV[W݂ꍇÃvV[WĂяo܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Ȃ</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>&lt;%

' The following code tests the result from a method call
' to a custom server component that attempts to remove
' a book from the inventory table and then tests the
' results from a credit card check.

' Based on this code and the segment that follows it, the 
' script will call either the SetAbort or the SetComplete 
' method of the ObjectContext object.

' Attempt to sell 2 copies of the book Animal Farm.
intBooks = MyInventory.SellBook("Animal Farm", 2)

' Check the credit card given by the client.
intCheckCC = MyCreditChecker.ChkCard("0001231234")

If intBooks = 2 And intCheckCC = 0 Then

   ' Complete the transaction. Two copies of the book 
   ' are in the inventory and the credit card checks out.
   ObjectContext.SetComplete

Else

   ' Abort the transaction. Either there are not two 
   ' copies of the book in the inventory or the credit 
   ' card did not check out.
   ObjectContext.SetAbort

End If

%&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>gUNVXNvg̔Cӂ̃ZOgASetAbort \bhĂяoƂł܂BSetAbort ĂяǒɃR[h݂ꍇÃR[h̏́AOnTransactionAbort CxgvV[W΁ÃvV[Ws܂ōs܂B̂߁AOnTransactionAbort CxgvV[WŁAgUNVŃT|[gĂȂANV (Ƀt@CANV) ɕKvȃN[AbvƂs邱ƂmFĂB</p>




<p>SetAbort ĂяoƂ͖֌WɂR[hꍇÃR[hXNvg SetAbort ĂяȏOɂ邱ƂmF邩AXNvg̃R[ȟɂgUNV̊eXgĂB</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="SetComplete">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
SetComplete</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">ObjectContext.SetComplete</span>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p><!--<primary>SetComplete method
(ObjectContext)</primary>--> <!--<primary>committing
transactions</primary>-->gUNV̐Ȋʒm܂B̃\bhĂяoƁAOnTransactionCommit CxgvV[W݂ꍇÃvV[W̃R[h܂B</p>




<p>XNvgg SetComplete \bhĂяoĂÃy[W̃XNvg̐邾łBXNvgŎQƂR|[lg̃R[hsĂA̎s͖ɂȂ܂BXNvĝׂẴgUNVR|[lgASetComplete ʒmăgUNVR~bgKv܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Ȃ</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>ÕZNVuSetAbortv̗QƂĂB</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>SetComplete ĂяoĂAKgUNVŜƂɂ͂Ȃ܂BXNvgĂяoꂽׂẴR|[lgAObjectContext IuWFNg SetComplete \bhĂяoKv܂B</p>




<p>SetComplete 𖾎IɌĂяoȂꍇASetAbort ĂяoȂłׂẴR[hꂽɂ̂݁AgUNV܂BXNvg̍Ō܂ SetAbort ĂяosȂꍇASetComplete Ăяoꂽǂɖ֌WɁAOnTransactionCommit CxgvV[WR[h΁ÃR[h܂B</p>



</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="OnTransactionAbort">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
OnTransactionAbort</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">OnTransactionAbort( )</span>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p>ObjectContext IuWFNg SetAbort \bhXNvgR[h܂̓XNvgR[hĂяoT[o[R|[lgɂĖIɌĂяoƁA<!--<primary>OnTransactionAbort event
(ObjectContext)</primary>-->OnTransactionAbort CxgvV[Wɏ܂BSetAbort \bhĂяoȂ΁ÃCxgvV[W͏܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Ȃ</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>&lt;% 

' The following code procedure is processed when the code in 
' the SetAbort method example is processed.
Sub OnTransactionAbort ( )
%&gt;
   Your book sales transaction could not be completed.
   Either there was not sufficient inventory for your
   sale to be processed, or your credit card did not 
   go through.
&lt;%
   ' Clean up any nontransactional actions here...

End Sub

%&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>gUNV쐬T|[gĂȂANVŁAgUNVsꍇɌɖ߂KvANVN[Abvɂ́AOnTransactionAbort gp܂B̒ɂ́Aϐ (ZbVуAvP[Vx̃XR[v)AWXgAуt@CVXeɑ΂ύX܂܂Ă܂BAT[o[R|[lǵAgN[AbvKv܂B</p>




<p>OnTransactionAbort CxggpāAgUNVsƂNCAgɒʒmKv܂B</p>




<p>OnTransactionAbort CxgvV[W SetAbort \bh܂ SetCommit \bhĂяoȂłBĂяoƁA[vAAvP[V̋@\邩Af[^\܂B</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
<div id="OnTransactionCommit">
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr valign="top">
<td class="NAME">
OnTransactionCommit</td>
<td class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td class="usage" colspan="2"><span class="LITERAL">OnTransactionCommit( )</span>
</td></tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr><td colspan="2" class="description">
<p>ObjectContext IuWFNg SetComplete \bhXNvgR[h܂̓XNvgR[hĂяoT[o[R|[lgɂĖIɌĂяoƁA<!--<primary>OnTransactionCommit event
(ObjectContext)</primary>-->OnTransactionCommit CxgvV[Wɏ܂B݂̃y[W̃XNvg SetAbort \bhĂяoȂꍇɂAَIɌĂяo܂B</p>



</td>
</tr>
<tr><td colspan="2" class="CLEARSEPARATION">&nbsp;</td></tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE">p[^</td>
</tr>
<tr>
<td colspan="2" class="description">




<p>Ȃ</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<span class="PROGRAMLISTING"><pre>&lt;% 

' The following code procedure is processed when the code in 
' the SetComplete method example is processed.
Sub OnTransactionCommit ( )
%&gt;
   Your book sales transaction was completed.
   Thank you for your sale.

&lt;%
   Session("intTotalSales") = Session("intTotalSales") + 1

   ' Process any nontransactional code here...

End Sub

%&gt;</pre></span>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="DESCRIPTIONTITLE"></td>
</tr>
<tr>
<td colspan="2" class="description">




<p>OnTransactionCommit CxgvV[WgpƁANCAgɃgUNV̐ʒmł܂BgUNVɊꍇɂ̂ݏR[hɂÃvV[Wgpł܂B</p>




<p>OnTransactionCommit CxgvV[W SetAbort \bh܂ SetCommit \bhĂяoȂłBĂяoƁA[vAAvP[V̋@\邩Af[^\܂B


</p>




</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
</table>
</div>
</body>
</html>
