ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Tupitsyn (Jira)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-13336) .NET: Misleading LINQ exception when expression can't be translated
Date Thu, 06 Aug 2020 11:32:00 GMT
Pavel Tupitsyn created IGNITE-13336:

             Summary: .NET: Misleading LINQ exception when expression can't be translated
                 Key: IGNITE-13336
                 URL: https://issues.apache.org/jira/browse/IGNITE-13336
             Project: Ignite
          Issue Type: Bug
          Components: platforms
    Affects Versions: 2.8.1
            Reporter: Pavel Tupitsyn
            Assignee: Pavel Tupitsyn
             Fix For: 2.10

The following program results in a cryptic exception, when the problem is simply lack of Expression<>
wrapper around the query filter:

    class Program
        private static readonly IIgnite Ignite = Ignition.Start();

        static void Main(string[] args)
            var cache = GetCache<Foo>();

            cache["1"] = new Foo();

            var res = Where2<Foo>(e => e.Value.X == 0);


        public static ICache<string, T> GetCache<T>()
            var cacheName = typeof(T).Name;
            var cfg = new CacheConfiguration(cacheName, new QueryEntity(typeof(T)));

            return Ignite.GetOrCreateCache<string, T>(cfg);

        public static List<T> Where2<T>(Expression<Func<ICacheEntry<string,
T>, bool>> query)
            var queryResult = GetCache<T>().AsCacheQueryable().Where(query);

            return queryResult.Select(x => x.Value).ToList();

    public class Foo
        [QuerySqlField] public int X { get; set; }

We should throw a better exception that says "LINQ expression can't be translated to SQL because
of ..."

This message was sent by Atlassian Jira

View raw message