﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Interface ITransactionsClient
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Interface ITransactionsClient
   | Apache Ignite.NET ">
    <meta name="generator" content="docfx 2.58.4.0">
    
    <link rel="shortcut icon" href="../images/favicon.ico">
    <link rel="stylesheet" href="../styles/docfx.vendor.css">
    <link rel="stylesheet" href="../styles/docfx.css">
    <link rel="stylesheet" href="../styles/main.css">
    <meta property="docfx:navrel" content="../toc.html">
    <meta property="docfx:tocrel" content="toc.html">
    
    <meta property="docfx:rel" content="../">
    
  </head>
  <body data-spy="scroll" data-target="#affix" data-offset="120">
    <div id="wrapper">
      <header>
        
        <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
          <div class="container">
            <div class="navbar-header">
              <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
              </button>
              
              <a class="navbar-brand" href="../index.html">
                <img id="logo" class="svg" src="../images/logo_ignite_32_32.png" alt="">
              </a>
            </div>
            <div class="collapse navbar-collapse" id="navbar">
              <form class="navbar-form navbar-right" role="search" id="search">
                <div class="form-group">
                  <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
                </div>
              </form>
            </div>
          </div>
        </nav>
        
        <div class="subnav navbar navbar-default">
          <div class="container hide-when-search" id="breadcrumb">
            <ul class="breadcrumb">
              <li></li>
            </ul>
          </div>
        </div>
      </header>
      <div class="container body-content">
        
        <div id="search-results">
          <div class="search-list">Search Results for <span></span></div>
          <div class="sr-items">
            <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
          </div>
          <ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
        </div>
      </div>
      <div role="main" class="container body-content hide-when-search">
        
        <div class="sidenav hide-when-search">
          <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
          <div class="sidetoggle collapse" id="sidetoggle">
            <div id="sidetoc"></div>
          </div>
        </div>
        <div class="article row grid-right">
          <div class="col-md-10">
            <article class="content wrap" id="_content" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient">
  
  
  <h1 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient" class="text-break">Interface ITransactionsClient
  </h1>
  <div class="markdown level0 summary"><p>Ignite Thin Client transactions facade.
<p>
Transactions are bound to the thread started the transaction. After that, each cache operation within this thread
will belong to the corresponding transaction until the transaction is committed, rolled back or closed.
<p>
Should not be used with async calls.
<example>
    You can use cache transactions as follows:<p>
<pre><code>using (var tx = igniteClient.GetTransactions().TxStart())
{
    int v1 = cache&lt;string, int>.Get(&quot;k1&quot;);

    // Check if v1 satisfies some condition before doing a put.
    if (v1 > 0)
        cache.Put&lt;string, int>(&quot;k1&quot;, 2);

    cache.Remove(&quot;k2&quot;);

    // Commit the transaction.
    tx.Commit();
}</code></pre>
<p></example></p>
<p>Alternatively, <see cref="!:TransactionScope"></see> can be used to start Ignite transactions.
<example><p>
<pre><code>using (var ts = new TransactionScope())
{
    int v1 = cache&lt;string, int>.Get(&quot;k1&quot;);

    // Check if v1 satisfies some condition before doing a put.
    if (v1 > 0)
        cache.Put&lt;string, int>(&quot;k1&quot;, 2);

    cache.Remove(&quot;k2&quot;);

    // Commit the transaction.
    ts.Complete();
}</code></pre>
<p></example></p>
</div>
  <div class="markdown level0 conceptual"></div>
  <h6><strong>Namespace</strong>: <a class="xref" href="Apache.Ignite.Core.Client.Transactions.html">Apache.Ignite.Core.Client.Transactions</a></h6>
  <h6><strong>Assembly</strong>: Apache.Ignite.Core.dll</h6>
  <h5 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public interface ITransactionsClient</code></pre>
  </div>
  <h3 id="properties">Properties
  </h3>
  <a id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_DefaultTimeout_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.DefaultTimeout*"></a>
  <h4 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_DefaultTimeout" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.DefaultTimeout">DefaultTimeout</h4>
  <div class="markdown level1 summary"><p>Gets the default transaction timeout.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">TimeSpan DefaultTimeout { get; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">TimeSpan</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_DefaultTransactionConcurrency_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.DefaultTransactionConcurrency*"></a>
  <h4 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_DefaultTransactionConcurrency" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.DefaultTransactionConcurrency">DefaultTransactionConcurrency</h4>
  <div class="markdown level1 summary"><p>Gets the default transaction concurrency.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">TransactionConcurrency DefaultTransactionConcurrency { get; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionConcurrency.html">TransactionConcurrency</a></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_DefaultTransactionIsolation_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.DefaultTransactionIsolation*"></a>
  <h4 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_DefaultTransactionIsolation" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.DefaultTransactionIsolation">DefaultTransactionIsolation</h4>
  <div class="markdown level1 summary"><p>Gets the default transaction isolation.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">TransactionIsolation DefaultTransactionIsolation { get; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html">TransactionIsolation</a></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_Tx_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.Tx*"></a>
  <h4 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_Tx" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.Tx">Tx</h4>
  <div class="markdown level1 summary"><p>Gets transaction started by this thread or null if this thread does not have a transaction.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">ITransactionClient Tx { get; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Client.Transactions.ITransactionClient.html">ITransactionClient</a></td>
        <td><p>Transaction started by this thread or null if this thread does not have a transaction.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h3 id="methods">Methods
  </h3>
  <a id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_TxStart_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.TxStart*"></a>
  <h4 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_TxStart" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.TxStart">TxStart()</h4>
  <div class="markdown level1 summary"><p>Starts a new transaction with the default isolation level, concurrency and timeout.
<p>
Default values for transaction isolation level, concurrency and timeout can be configured via
<a class="xref" href="Apache.Ignite.Core.Client.Transactions.TransactionClientConfiguration.html">TransactionClientConfiguration</a>.
<p>
Should not be used with async calls.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">ITransactionClient TxStart()</code></pre>
  </div>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Client.Transactions.ITransactionClient.html">ITransactionClient</a></td>
        <td><p>New transaction.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_TxStart_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.TxStart*"></a>
  <h4 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_TxStart_Apache_Ignite_Core_Transactions_TransactionConcurrency_Apache_Ignite_Core_Transactions_TransactionIsolation_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.TxStart(Apache.Ignite.Core.Transactions.TransactionConcurrency,Apache.Ignite.Core.Transactions.TransactionIsolation)">TxStart(TransactionConcurrency, TransactionIsolation)</h4>
  <div class="markdown level1 summary"><p>Starts a new transaction with the specified concurrency and isolation.
<p>
Should not be used with async calls.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">ITransactionClient TxStart(TransactionConcurrency concurrency, TransactionIsolation isolation)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionConcurrency.html">TransactionConcurrency</a></td>
        <td><span class="parametername">concurrency</span></td>
        <td><p>Concurrency.</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html">TransactionIsolation</a></td>
        <td><span class="parametername">isolation</span></td>
        <td><p>Isolation.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Client.Transactions.ITransactionClient.html">ITransactionClient</a></td>
        <td><p>New transaction.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_TxStart_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.TxStart*"></a>
  <h4 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_TxStart_Apache_Ignite_Core_Transactions_TransactionConcurrency_Apache_Ignite_Core_Transactions_TransactionIsolation_TimeSpan_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.TxStart(Apache.Ignite.Core.Transactions.TransactionConcurrency,Apache.Ignite.Core.Transactions.TransactionIsolation,TimeSpan)">TxStart(TransactionConcurrency, TransactionIsolation, TimeSpan)</h4>
  <div class="markdown level1 summary"><p>Starts a new transaction with the specified concurrency, isolation and timeout.
<p>
Should not be used with async calls.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">ITransactionClient TxStart(TransactionConcurrency concurrency, TransactionIsolation isolation, TimeSpan timeout)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionConcurrency.html">TransactionConcurrency</a></td>
        <td><span class="parametername">concurrency</span></td>
        <td><p>Concurrency.</p>
</td>
      </tr>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Transactions.TransactionIsolation.html">TransactionIsolation</a></td>
        <td><span class="parametername">isolation</span></td>
        <td><p>Isolation.</p>
</td>
      </tr>
      <tr>
        <td><span class="xref">TimeSpan</span></td>
        <td><span class="parametername">timeout</span></td>
        <td><p>Timeout. TimeSpan. Zero for indefinite timeout.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Client.Transactions.ITransactionClient.html">ITransactionClient</a></td>
        <td><p>New transaction.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_WithLabel_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.WithLabel*"></a>
  <h4 id="Apache_Ignite_Core_Client_Transactions_ITransactionsClient_WithLabel_System_String_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.WithLabel(System.String)">WithLabel(String)</h4>
  <div class="markdown level1 summary"><p>Returns instance of <a class="xref" href="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.html">ITransactionsClient</a> to mark a transaction instance with a special label.
The label is helpful for diagnostic and exposed to some diagnostic tools like
SYS.TRANSACTIONS system view, control.sh commands, JMX TransactionsMXBean,
long-running transactions dump in logs
and <a class="xref" href="Apache.Ignite.Core.Transactions.ITransaction.html#Apache_Ignite_Core_Transactions_ITransaction_Label">Label</a> via <a class="xref" href="Apache.Ignite.Core.Transactions.ITransactions.html#Apache_Ignite_Core_Transactions_ITransactions_GetLocalActiveTransactions">GetLocalActiveTransactions()</a>.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">ITransactionsClient WithLabel(string label)</code></pre>
  </div>
  <h5 class="parameters">Parameters</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Name</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><span class="xref">System.String</span></td>
        <td><span class="parametername">label</span></td>
        <td><p>Label.</p>
</td>
      </tr>
    </tbody>
  </table>
  <h5 class="returns">Returns</h5>
  <table class="table table-bordered table-striped table-condensed">
    <thead>
      <tr>
        <th>Type</th>
        <th>Description</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><a class="xref" href="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.html">ITransactionsClient</a></td>
        <td><a class="xref" href="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.html">ITransactionsClient</a>
</td>
      </tr>
    </tbody>
  </table>
</article>
          </div>
          
          <div class="hidden-sm col-md-2" role="complementary">
            <div class="sideaffix">
              <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
                <h5>In This Article</h5>
                <div></div>
              </nav>
            </div>
          </div>
        </div>
      </div>
      
      <footer>
        <div class="grad-bottom"></div>
        <div class="footer">
          <div class="container">
            <span class="pull-right">
              <a href="#top">Back to top</a>
            </span>
            © 2015 - 2019 The Apache Software Foundation
            
          </div>
        </div>
      </footer>
    </div>
    
    <script type="text/javascript" src="../styles/docfx.vendor.js"></script>
    <script type="text/javascript" src="../styles/docfx.js"></script>
    <script type="text/javascript" src="../styles/main.js"></script>
  </body>
</html>
