public void LinqToEntities51()
        {
            Require.ProviderIsNot(StorageProvider.SqlServerCe);
            Require.ProviderIsNot(StorageProvider.Firebird);
            Require.ProviderIsNot(StorageProvider.MySql);
            var query = Session.Query.All <Invoice>()
                        .Where(i => i.BillingAddress.Country == "Mexico")
                        .Select(i => i.DesignatedEmployee)
                        .Except(Session.Query.All <Invoice>()
                                .Where(i => i.BillingAddress.Country == "Canada")
                                .Select(i => i.DesignatedEmployee));

            QueryDumper.Dump(query);
        }
        public void LinqToEntities40()
        {
            Require.AllFeaturesSupported(ProviderFeatures.ScalarSubqueries);
            var query = from p in Session.Query.All <Track>()
                        group p by p.MediaType
                        into g
                        select new {
                g.Key,
                ExpensiveProducts =
                    from t2 in g
                    where t2.UnitPrice > g.Average(t3 => t3.UnitPrice)
                    select t2
            };

            QueryDumper.Dump(query);
        }
        public void LinqToEntities47()
        {
            Require.ProviderIsNot(StorageProvider.SqlServerCe);
            var mexico = Session.Query.All <Invoice>().Where(i => i.BillingAddress.Country == "Mexico").Select(i => i);
            var canada = Session.Query.All <Invoice>().Where(i => i.BillingAddress.Country == "Canada").Select(i => i);
            var union  = mexico.Union(canada).Select(i => i.DesignatedEmployee);

            var query = union.Distinct();

            var actualMexico = Session.Query.All <Invoice>().ToList()
                               .Where(i => i.BillingAddress.Country == "Mexico").Select(i => i);
            var actualCanada = Session.Query.All <Invoice>().ToList()
                               .Where(i => i.BillingAddress.Country == "Canada").Select(i => i);
            var actualUnion = actualMexico.Union(actualCanada).Select(i => i.DesignatedEmployee);

            var actual = actualUnion.Distinct();

            Assert.AreEqual(0, actual.Select(e => e.EmployeeId).Except(query.ToList().Select(e => e.EmployeeId)).Count());

            QueryDumper.Dump(query);
        }
        public void LinqToEntities30()
        {
            var query = Session.Query.All <Invoice>().Min(i => i.Commission);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities39()
        {
            var query = Session.Query.All <Track>().Where(p => p.MediaType.MediaTypeId == 305).Average(p => p.UnitPrice);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities38()
        {
            var query = Session.Query.All <Track>().Average(p => p.UnitPrice);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities37()
        {
            var query = Session.Query.All <Invoice>().Select(i => i.Commission).Average();

            QueryDumper.Dump(query);
        }
        public void LinqToEntities35()
        {
            var query = Session.Query.All <Track>().Where(p => p.MediaType.MediaTypeId == 305).Max(p => p.Milliseconds);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities80()
        {
            var query = Session.Query.All <Track>().OfType <AudioTrack>();

            QueryDumper.Dump(query);
        }
        public void LinqToEntities67()
        {
            var query = Session.Query.All <Customer>().GroupBy(c => c.Address.State).Select(r => new { state = r.Key, count = r.Count() });

            QueryDumper.Dump(query);
        }
        public void LinqToEntities58()
        {
            var query = Session.Query.All <Customer>().Select(c => c).OrderByDescending(c2 => c2.Address.State);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities28()
        {
            var query = Session.Query.All <Track>().Where(p => p.Genre.GenreId == 299).Sum(p => p.Milliseconds);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities29()
        {
            var query = Session.Query.All <Track>().Select(p => p.UnitPrice).Min();

            QueryDumper.Dump(query);
        }
        public void LinqToEntities24()
        {
            var query = Session.Query.All <Invoice>().Where(i => i.Customer.Address.Country == "Mexico").Count();

            QueryDumper.Dump(query);
        }
        public void LinqToEntities23()
        {
            var query = Session.Query.All <Invoice>().Count();

            QueryDumper.Dump(query);
        }
        public void LinqToEntities15a()
        {
            var query = Session.Query.All <Customer>().Select(c => new { Customer = c, Invoices = c.Invoices.Where(i => i.Commission > 0.05m) });

            QueryDumper.Dump(query);
        }
        public void LinqToEntities84()
        {
            var query = Session.Query.All <Person>().OfType <BusinessContact>().Select(c => c);

            Assert.Throws <QueryTranslationException>(() => QueryDumper.Dump(query));
        }
        public void LinqToEntities81()
        {
            var query = Session.Query.All <Track>().Where(p => p is VideoTrack);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities31()
        {
            var query = Session.Query.All <Invoice>().Where(i => i.BillingAddress.Country == "Mexico").Min(i => i.Commission);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities33()
        {
            var query = Session.Query.All <Employee>().Select(e => e.HireDate).Max();

            QueryDumper.Dump(query);
        }
        public void LinqToEntities61()
        {
            var query = Session.Query.All <Customer>().Select(c => c).OrderBy(c => c.Address.State).ThenByDescending(c => c.LastName);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities34()
        {
            var query = Session.Query.All <Track>().Max(p => p.Milliseconds);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities71()
        {
            var query = Session.Query.All <Customer>().Where(cust => cust.CustomerId == 4200).SelectMany(c => c.Invoices);

            QueryDumper.Dump(query);
        }
        public void LinqToEntities79()
        {
            var query = Session.Query.All <Track>().OfType <Track>().Select(p => p);

            QueryDumper.Dump(query);
        }