blob: c1a34ff5081f2b6b09f9d20169f92cc14fd31ca6 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.5.0/dotnetdoc/api/Apache.Ignite.Core.Cache.Store.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Namespace Apache.Ignite.Core.Cache.Store
| Apache Ignite.NET </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Apache.Ignite.Core.Cache.Store
| 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>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61232409-1', 'auto');
ga('send', 'pageview');
</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.Cache.Store">
<h1 id="Apache_Ignite_Core_Cache_Store" data-uid="Apache.Ignite.Core.Cache.Store" class="text-break">Namespace Apache.Ignite.Core.Cache.Store
</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>
<div class="markdown level0 remarks"></div>
<h3 id="classes">Classes
</h3>
<h4><a class="xref" href="Apache.Ignite.Core.Cache.Store.CacheParallelLoadStoreAdapter-3.html">CacheParallelLoadStoreAdapter&lt;TK, TV, TData&gt;</a></h4>
<section><p>Cache storage adapter with parallel loading in LoadAll method. </p>
</section>
<h4><a class="xref" href="Apache.Ignite.Core.Cache.Store.CacheStoreAdapter-2.html">CacheStoreAdapter&lt;TK, TV&gt;</a></h4>
<section><p>Cache storage convenience adapter. It provides default implementation for
bulk operations, such as <code>LoadAll</code>, <code>PutAll</code> and
<code>RemoveAll</code> by sequentially calling corresponding <code>Load</code>,
<code>Put</code> and <code>Remove</code> operations. Use this adapter whenever
such behaviour is acceptable. However in many cases it maybe more preferable
to take advantage of database batch update functionality, and therefore default
adapter implementation may not be the best option.
<p>
Note that <code>LoadCache</code> method has empty implementation because it is
essentially up to the user to invoke it with specific arguments.</p>
</section>
<h4><a class="xref" href="Apache.Ignite.Core.Cache.Store.CacheStoreException.html">CacheStoreException</a></h4>
<section><p>Indicates an error during CacheStore operation.</p>
</section>
<h3 id="interfaces">Interfaces
</h3>
<h4><a class="xref" href="Apache.Ignite.Core.Cache.Store.ICacheStore.html">ICacheStore</a></h4>
<section><p>Non-generic base type for <a class="xref" href="Apache.Ignite.Core.Cache.Store.ICacheStore-2.html">ICacheStore&lt;TK, TV&gt;</a>, used only for configuration property.
Users should implement generic <a class="xref" href="Apache.Ignite.Core.Cache.Store.ICacheStore-2.html">ICacheStore&lt;TK, TV&gt;</a>.</p>
</section>
<h4><a class="xref" href="Apache.Ignite.Core.Cache.Store.ICacheStore-2.html">ICacheStore&lt;TK, TV&gt;</a></h4>
<section><p>API for cache persistent storage for read-through and write-through behavior.
<p>
Generic argument types depend on <a class="xref" href="Apache.Ignite.Core.Cache.Configuration.CacheConfiguration.html#Apache_Ignite_Core_Cache_Configuration_CacheConfiguration_KeepBinaryInStore">KeepBinaryInStore</a> property.
When <code>true</code> (default), cache store operates on <a class="xref" href="Apache.Ignite.Core.Binary.IBinaryObject.html">IBinaryObject</a> instances.
Otherwise, generic arguments should be the same as in corresponding <a class="xref" href="Apache.Ignite.Core.Cache.ICache-2.html">ICache&lt;TK, TV&gt;</a>.
<p>
Persistent store is configured in Ignite&apos;s Spring XML configuration file via
<code>CacheConfiguration.setStore()</code> property. If you have an implementation
of cache store in .NET, you should use special Java wrapper which accepts assembly name and
class name of .NET store implementation (both properties are mandatory).</p>
<p>Optionally, you may specify &quot;properies&quot; property to set any property values on an instance of your store.
<example>
Here is an example:<p>
<pre><code>&lt;bean class=&quot;org.apache.ignite.configuration.CacheConfiguration&quot;>
...
&lt;property name=&quot;cacheStoreFactory&quot;>
&lt;bean class=&quot;org.apache.ignite.platform.dotnet.PlatformDotNetCacheStoreFactory&quot;>
&lt;property name=&quot;assemblyName&quot; value=&quot;MyAssembly&quot;/>
&lt;property name=&quot;className&quot; value=&quot;MyApp.MyCacheStore&quot;/>
&lt;property name=&quot;properties&quot;>
&lt;map>
&lt;entry key=&quot;IntProperty&quot;>
&lt;value type=&quot;java.lang.Integer&quot;>42&lt;/value>
&lt;/entry>
&lt;entry key=&quot;StringProperty&quot; value=&quot;String value&quot;/>
&lt;/map>
&lt;/property>
&lt;/bean>
&lt;/property>
...
&lt;/bean></code></pre>
<p></example>
Assemply name and class name are passed to <a target="_blank" href="http://msdn.microsoft.com/en-us/library/d133hta4.aspx"><strong>System.Activator.CreateInstance(String, String)</strong></a>
method during node startup to create an instance of cache store. Refer to its documentation for details.
<p>
All transactional operations of this API are provided with ongoing <a class="xref" href="Apache.Ignite.Core.Transactions.ITransaction.html">ITransaction</a>,
if any. You can attach any metadata to transaction, e.g. to recognize if several operations
belong to the same transaction or not.
<example>
Here is an example of how attach a ODBC connection as transaction metadata:<p>
<pre><code>OdbcConnection conn = tx.Meta(&quot;some.name&quot;);
if (conn == null)
{
conn = ...; // Create or get connection.
// Store connection in transaction metadata, so it can be accessed
// for other operations on the same transaction.
tx.AddMeta(&quot;some.name&quot;, conn);
}</code></pre>
<p></example></p>
</section>
<h4><a class="xref" href="Apache.Ignite.Core.Cache.Store.ICacheStoreSession.html">ICacheStoreSession</a></h4>
<section><p>Session for the cache store operations. The main purpose of cache store session
is to hold context between multiple store invocations whenever in transaction. For example,
you can save current database connection in the session <a class="xref" href="Apache.Ignite.Core.Cache.Store.ICacheStoreSession.html#Apache_Ignite_Core_Cache_Store_ICacheStoreSession_Properties">Properties</a> map. You can then
commit this connection in the <a class="xref" href="Apache.Ignite.Core.Cache.Store.ICacheStore-2.html#Apache_Ignite_Core_Cache_Store_ICacheStore_2_SessionEnd_System_Boolean_">SessionEnd(Boolean)</a> method.</p>
</section>
</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 - 2018 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>