1) Deploy an interface ICacheStore(or inherit a CacheStoreAdapterhelper class)
public class OracleStore : CacheStoreAdapter
{
public override object Load(object key)
{
using (var con = new OracleConnection
{
ConnectionString = "User Id=<username>;Password=<password>;Data Source=<datasource>"
})
{
con.Open();
var cmd = con.CreateCommand();
cmd.CommandText = "SELECT * FROM MyTable WHERE ID=@id";
cmd.Parameters.Add("@id", OracleType.Int32);
cmd.Parameters["@id"].Value = key;
using (var reader = cmd.ExecuteReader())
{
}
}
}
public override void Write(object key, object val)
{
oracleDb.UpdateRow(key, val);
}
public override void Delete(object key)
{
oracleDb.DeleteRow(key);
}
}
2) Implement factory storage:
public class OracleStoreFactory : IFactory<OracleStore>
{
public OracleStore CreateInstance()
{
return new OracleStore();
}
}
3) Configure cache to use storage:
using (var ignite = Ignition.Start())
{
var cacheCfg = new CacheConfiguration
{
ReadThrough = true,
WriteThrough = true,
KeepBinaryInStore = false,
CacheStoreFactory = new OracleStoreFactory()
};
var cache = ignite.CreateCache<int, MyClass>(cacheCfg);
cache.Get(1);
}
Documentation for Ignite.NET (in C #): https://apacheignite-net.readme.io/docs/persistent-store
C # examples are available in the full download package: https://ignite.apache.org/download.cgi#binaries (click apache-ignite-fabric-1.9.0-bin. Zip, download, unzip, open the \ dotnet \ examples platforms \ Apache.Ignite.Examples.sln)
Blog post explaining cache storage implementation in C #:
https://ptupitsyn.imtqy.com/Entity-Framework-Cache-Store/
Oracle DB .NET: Oracle #?