﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
      ym(72949126, "init", {
           clickmap:true,
           trackLinks:true,
           accurateTrackBounce:true,
           webvisor:true
      });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
<script type='text/javascript'>
    window.__lo_site_id = 284467;
    
      (function() {
        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
        })();
      </script>
<link rel="canonical" href="https://ignite.apache.org/releases/latest/dotnetdoc/api/Apache.Ignite.Core.Client.Transactions.ITransactionsClient.html" />
    <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.24.0.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="../">
    
  
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'UA-61232409-1');
    </script></head>
  <body data-spy="scroll" data-target="#affix">
    <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"></div>
          <div class="sr-items"></div>
          <ul id="pagination"></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, <span class="xref">System.Transactions.TransactionScope</span> 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">System.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_System_TimeSpan_" data-uid="Apache.Ignite.Core.Client.Transactions.ITransactionsClient.TxStart(Apache.Ignite.Core.Transactions.TransactionConcurrency,Apache.Ignite.Core.Transactions.TransactionIsolation,System.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">System.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><span class="xref">Apache.Ignite.Core.Client.Transactions.IClientTransactions</span>
</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">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </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>
