Hi Pavel,

I am using the same car program which you have written in blog and i have
some doubts on that.

I have the following scenarios which i have doubts on.

1.#region using put
                    List<car> directcar = new List<car>();
                    while (rdr.Read())
                    {
                        directcar.Add(new car(rdr["Name"].ToString(),
Convert.ToDouble(rdr["Power"])));
                    }
                    cache.Put(1, directcar);
                    #endregion put
Here i am creating a cache and adding list of values with a single key

2.Using data streamer
 //using (var ldr = ignite.GetDataStreamer<int, car>(cacheCfg.Name))
                    //{
                    // //ldr.PerNodeBufferSize = 1024;


                    // while (rdr.Read())
                    // {
                    // ldr.AddData((int)rdr[0], new
car(rdr["Name"].ToString(),Convert.ToDouble(rdr["Power"])));

                    // Console.WriteLine("LDR" + ldr.ToString());

                    // }

                    //}
here i am using datastreamer and adding each values with a key

3. #region adding all elements as list with single key using get datastremer
                    using (var ldr = ignite.GetDataStreamer<int,
List<car>>(cacheCfg.Name))
                    {
                        List<car> cars = new List<car>();

                        while (rdr.Read())
                        {
                            cars.Add(new car(rdr["Name"].ToString(),
Convert.ToDouble(rdr["Power"])));
                        }
                        ldr.AddData(1, cars);
                        Console.WriteLine("LDR" + ldr.ToString());

                    }
                    #region reading from cache
                    foreach (ICacheEntry<int, List<car>> car in cache)
                    {
                        foreach (car cars in car.Value)
                        {
                            Console.WriteLine(cars.ToString());
                        }
                        Console.WriteLine(car.Value.ToList());


                    }
                    #endregion
here i am using data streamer to add list of values with a single key.

so now when this application is running and all the cache data has been
loaded i have added a new record in my table.

so for that i have added a listener like this

 var mapper = new ModelToTableMapper<car>();
                mapper.AddMapping(c => c.ID, "ID");
                mapper.AddMapping(c => c.Name, "Name");
                mapper.AddMapping(c => c.Power, "Power");
                mapper.AddMapping(c => c.IsAvailable, "IsAvailable");



                using (var dep = new
SqlTableDependency<car>(ad.sqlconnection, "Cars", mapper))
                {
                    dep.OnChanged += Changed;
                    dep.Start();

                    Console.WriteLine("Press a key to exit");
                    Console.ReadKey();

                    dep.Stop();
                }
                #endregion
  static void Changed(object sender, RecordChangedEventArgs<car> e)
        {
            if (e.ChangeType != ChangeType.None)
            {
                var changedEntity = e.Entity;
                Console.WriteLine("DML operation: " + e.ChangeType);
                Console.WriteLine("ID: " + changedEntity.ID);
                Console.WriteLine("Name: " + changedEntity.Name);
                Console.WriteLine("Power: " + changedEntity.Power);
                Console.WriteLine("IsAvailable: " +
changedEntity.IsAvailable);


Console.WriteLine("<-------------------------------------------------------------------------------------->");
}

so my question is when a new record has been added to my table i get a
event triggered and will get the value which is inserted.

so now how to add the new value to existing cache say by using datastreamer
which works on list i need to add this row to end of list in existing cache.

Delete
when record is deleted i get a event and i need to delete that record from
existing cache.

Update
when a column of table is updated say NAME column i need to update that
particular column value in cache.

can you please help me how to implement this.

            }

Reply via email to