Val, ToQueryable comes from standard IQueryable/IEnumerable interfaces.
IEnumerable is a very basic interface that all the collections implement
(lists, arrays, etc).
IQueryable implements IEnumerable, but adds Provider which evaluates the
query.

Our ICache is already IEnumerable (it delegates to IgniteCache.iterator()
in Java).
So you can already say 'cache.Where(e => e.Key > 10)' and so on, but the
filtering will occur locally, as opposed to 'ToQueryable().Where(...)'.

I think this is a good design. Any cache can be iterated, but queries have
to be configured, and ToQueryable clearly states that user wants to use SQL
queries.

Thoughts?

On Sat, Jan 23, 2016 at 9:58 AM, Valentin Kulichenko <
valentin.kuliche...@gmail.com> wrote:

> Looks nice, but what is ToQueryable() method for? Is the cache initially
> not queryable? :)
>
> -Val
>
> On Fri, Jan 22, 2016 at 9:49 AM, Sergi Vladykin <sergi.vlady...@gmail.com>
> wrote:
>
> > Looks cool to me.
> >
> > Sergi
> >
> > 2016-01-22 18:04 GMT+03:00 Pavel Tupitsyn <ptupit...@gridgain.com>:
> >
> > > Igniters,
> > >
> > > I'm working on LINQ support in Ignite.NET ([1]).
> > >
> > > For the uninitiated, LINQ will allow cache SQL queries in a
> > strongly-typed
> > > way, which is awesome:
> > >   cache.ToQueryable().Where(person => person.Age > 20)
> > > instead of
> > >   cache.Query(new SqlQuery(typeof(Person), "age > ?", 20))
> > >
> > > To greatly simplify the task of transforming expression tree to Ignite
> > SQL,
> > > I'm going to use re-linq [2].
> > > * It is an industry standard LINQ library, used in Entity Framework and
> > > NHibernate for the same purpose
> > > * License is Apache 2.0, same as ours
> > >
> > > Any thoughts or objections?
> > >
> > >
> > > [1] https://issues.apache.org/jira/browse/IGNITE-1630
> > > [2] https://relinq.codeplex.com/
> > >
> > > --
> > > --
> > > Pavel Tupitsyn
> > > GridGain Systems, Inc.
> > > www.gridgain.com
> > >
> >
>



-- 
-- 
Pavel Tupitsyn
GridGain Systems, Inc.
www.gridgain.com

Reply via email to