Wait a sec, I have already posted an example, but for some reasons it was not
send properly.
Here are we go:
class Program
{
private static IContinuousQueryHandle _continuousQuery;
const string CacheName = "sample";
const string TableName = "entity";
static void Main(string[] args)
{
var ignite = Ignition.Start();
var cache = ignite.GetOrCreateCache<object, object>(new
CacheConfiguration(CacheName) { SqlSchema = "PUBLIC" });
var createTalbeSql =
$"create table if not exists {TableName} (id int, field varchar,
primary key (Id)) " +
$"with \"key_type=int, value_type={typeof(MyEnity).FullName}\"";
cache.Query(new SqlFieldsQuery(createTalbeSql)).GetAll();
ICache<int, MyEnity> entityCache = ignite.GetCache<int,
MyEnity>($"SQL_PUBLIC_{TableName.ToUpper()}");
StartContinuousQuery(entityCache);
var entity0 = new MyEnity { Id = 2, Field = "NEW" };
entityCache.Put(entity0.Id, entity0);
var entity = entityCache.Get(entity0.Id);
Console.WriteLine(entity);
var sql = $"update {TableName} set field = 'updated' where Id =
{entity.Id}";
var res = entityCache.Query(new SqlFieldsQuery(sql)).GetAll();
Console.WriteLine(res.First()[0]);
sql = $"insert into {TableName} (_key, field) VALUES(7, 'new
value')";
res = entityCache.Query(new SqlFieldsQuery(sql)).GetAll();
Console.WriteLine(res.First()[0]);
Console.ReadLine();
_continuousQuery.Dispose();
Ignition.Stop(null, true);
}
public static void StartContinuousQuery(ICache<int, MyEnity> cache)
{
var query = new ContinuousQuery<int, MyEnity>(new
ClrCacheSyncEventListener());
_continuousQuery = cache.QueryContinuous(query);
}
public class ClrCacheSyncEventListener : ICacheEntryEventListener<int,
MyEnity>
{
public void OnEvent(IEnumerable<ICacheEntryEvent<int, MyEnity>>
evts)
{
foreach (ICacheEntryEvent<int, MyEnity> cacheEntryEvent in evts)
{
Console.WriteLine($"Action happened
{cacheEntryEvent.EventType}");
}
}
}
public class MyEnity
{
public MyEnity()
{
}
public int Id { get; set; }
[QuerySqlField]
public string Field { get; set; }
public override string ToString()
{
return $"Id = {this.Id}; TextField = {this.Field};";
}
}
}
--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/