Re: Ignite LINQ Help
That worked. Thanks Pavel. On Thu, Sep 22, 2016 at 2:57 AM, Pavel Tupitsyn wrote: > Hi, > > Your class is serialized with .NET BinaryFormatter, that's why SQL and > LINQ does not work [1]. > > To fix this, remove [Serializable] attribute and register the class in > BinaryConfiguration: > > > var cfg = new IgniteConfiguration { BinaryConfiguration = new > BinaryConfiguration(typeof(MyModel) }; > using (var ignite = Ignition.Start(cfg)) > ... > > > [1] https://apacheignite-net.readme.io/docs/serialization > > On Thu, Sep 22, 2016 at 6:15 AM, Murthy Kakarlamudi > wrote: > >> Hi all, >> I created a sample example based on the LINQExample provided in >> Ignite Examples. However I am not getting expected results. Any help is >> much appreciated. In my for loop at the end I am expecting the last 10 >> entries. But nothing is getting displayed. Any help is much appreciated. >> >> using System; >> using System.Collections.Generic; >> using System.Linq; >> using System.Text; >> using System.Threading.Tasks; >> using Apache.Ignite.Core; >> using Apache.Ignite.Linq; >> using Apache.Ignite.Core.Cache; >> using Apache.Ignite.Core.Cache.Configuration; >> using Apache.Ignite.Core.Cache.Query; >> >> using MyIgnite; >> >> namespace MyIgniteConsole >> { >> class Program >> { >> /// >> /// >> /// >> /// >> static void Main(string[] args) >> { >> using (var ignite = Ignition.Start()) >> { >> Console.WriteLine(); >> var cache = ignite.GetOrCreateCache(new >> CacheConfiguration >> { >> Name = "myCache", >> QueryEntities = new[] >> { >> new QueryEntity(typeof(int), typeof(MyModel)) >> >> } >> }); >> >> for (int i = 0; i < 100; i++) >> { >> cache.Put(i, new MyModel(i, "Test")); >> } >> >> Console.WriteLine("Cache size: "+cache.Get(10).MyKey); >> >> IQueryable> qry = >> cache.AsCacheQueryable().Where(obj => obj.Value.MyKey > >> 90); >> >> Console.WriteLine(); >> Console.WriteLine(">>> Objects with Key greater than 90 " >> ); >> >> foreach (ICacheEntry entry in qry) >> Console.WriteLine(">>>" + entry.Value); >> >> Console.WriteLine(); >> } >> >> >> >> Console.ReadLine(); >> } >> } >> } >> >> >> *MyModel Class:* >> using System; >> using System.Collections.Generic; >> using System.Linq; >> using System.Text; >> using System.Threading.Tasks; >> using Apache.Ignite.Core.Cache.Configuration; >> >> namespace MyIgniteConsole >> { >> [Serializable] >> class MyModel >> { >> >> public MyModel(int MyKeyIn, String MyStringIn) >> { >> MyKey = MyKeyIn; >> MyString = MyStringIn; >> } >> >> [QuerySqlField] >> public int MyKey { get; set; } >> >> public String MyString { get; set; } >> } >> } >> >> >
Re: Ignite LINQ Help
Hi, Your class is serialized with .NET BinaryFormatter, that's why SQL and LINQ does not work [1]. To fix this, remove [Serializable] attribute and register the class in BinaryConfiguration: var cfg = new IgniteConfiguration { BinaryConfiguration = new BinaryConfiguration(typeof(MyModel) }; using (var ignite = Ignition.Start(cfg)) ... [1] https://apacheignite-net.readme.io/docs/serialization On Thu, Sep 22, 2016 at 6:15 AM, Murthy Kakarlamudi wrote: > Hi all, > I created a sample example based on the LINQExample provided in > Ignite Examples. However I am not getting expected results. Any help is > much appreciated. In my for loop at the end I am expecting the last 10 > entries. But nothing is getting displayed. Any help is much appreciated. > > using System; > using System.Collections.Generic; > using System.Linq; > using System.Text; > using System.Threading.Tasks; > using Apache.Ignite.Core; > using Apache.Ignite.Linq; > using Apache.Ignite.Core.Cache; > using Apache.Ignite.Core.Cache.Configuration; > using Apache.Ignite.Core.Cache.Query; > > using MyIgnite; > > namespace MyIgniteConsole > { > class Program > { > /// > /// > /// > /// > static void Main(string[] args) > { > using (var ignite = Ignition.Start()) > { > Console.WriteLine(); > var cache = ignite.GetOrCreateCache(new > CacheConfiguration > { > Name = "myCache", > QueryEntities = new[] > { > new QueryEntity(typeof(int), typeof(MyModel)) > > } > }); > > for (int i = 0; i < 100; i++) > { > cache.Put(i, new MyModel(i, "Test")); > } > > Console.WriteLine("Cache size: "+cache.Get(10).MyKey); > > IQueryable> qry = > cache.AsCacheQueryable().Where(obj => obj.Value.MyKey > > 90); > > Console.WriteLine(); > Console.WriteLine(">>> Objects with Key greater than 90 " > ); > > foreach (ICacheEntry entry in qry) > Console.WriteLine(">>>" + entry.Value); > > Console.WriteLine(); > } > > > > Console.ReadLine(); > } > } > } > > > *MyModel Class:* > using System; > using System.Collections.Generic; > using System.Linq; > using System.Text; > using System.Threading.Tasks; > using Apache.Ignite.Core.Cache.Configuration; > > namespace MyIgniteConsole > { > [Serializable] > class MyModel > { > > public MyModel(int MyKeyIn, String MyStringIn) > { > MyKey = MyKeyIn; > MyString = MyStringIn; > } > > [QuerySqlField] > public int MyKey { get; set; } > > public String MyString { get; set; } > } > } > >
Ignite LINQ Help
Hi all, I created a sample example based on the LINQExample provided in Ignite Examples. However I am not getting expected results. Any help is much appreciated. In my for loop at the end I am expecting the last 10 entries. But nothing is getting displayed. Any help is much appreciated. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Apache.Ignite.Core; using Apache.Ignite.Linq; using Apache.Ignite.Core.Cache; using Apache.Ignite.Core.Cache.Configuration; using Apache.Ignite.Core.Cache.Query; using MyIgnite; namespace MyIgniteConsole { class Program { /// /// /// /// static void Main(string[] args) { using (var ignite = Ignition.Start()) { Console.WriteLine(); var cache = ignite.GetOrCreateCache(new CacheConfiguration { Name = "myCache", QueryEntities = new[] { new QueryEntity(typeof(int), typeof(MyModel)) } }); for (int i = 0; i < 100; i++) { cache.Put(i, new MyModel(i, "Test")); } Console.WriteLine("Cache size: "+cache.Get(10).MyKey); IQueryable> qry = cache.AsCacheQueryable().Where(obj => obj.Value.MyKey > 90); Console.WriteLine(); Console.WriteLine(">>> Objects with Key greater than 90 " ); foreach (ICacheEntry entry in qry) Console.WriteLine(">>>" + entry.Value); Console.WriteLine(); } Console.ReadLine(); } } } *MyModel Class:* using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Apache.Ignite.Core.Cache.Configuration; namespace MyIgniteConsole { [Serializable] class MyModel { public MyModel(int MyKeyIn, String MyStringIn) { MyKey = MyKeyIn; MyString = MyStringIn; } [QuerySqlField] public int MyKey { get; set; } public String MyString { get; set; } } }