public void HavingWithComplexExpression()
        {
            OrderItemCollection coll = new OrderItemCollection();

            coll.es.Connection.Name = "ForeignKeyTest";

            OrderItemQuery q = new OrderItemQuery();

            q.Select(q.OrderID, (q.Quantity * q.UnitPrice).Sum().As("TotalPrice"));
            q.Where(q.Discount.IsNull());
            q.GroupBy(q.OrderID);
            q.Having((q.Quantity * q.UnitPrice).Sum() > 500);

            switch (coll.es.Connection.ProviderSignature.DataProviderName)
            {
            case "EntitySpaces.SqlServerCeProvider":
            case "EntitySpaces.SqlServerCe4Provider":
            case "EntitySpaces.VistaDBProvider":
            case "EntitySpaces.VistaDB4Provider":
                q.OrderBy("<TotalPrice>", esOrderByDirection.Descending);
                break;

            default:
                q.OrderBy((q.Quantity * q.UnitPrice).Sum().Descending);
                break;
            }

            Assert.IsTrue(coll.Load(q), "Load");
            Assert.AreEqual(2, coll.Count, "Count");

            decimal price = Convert.ToDecimal(coll[0].GetColumn("TotalPrice"));

            Assert.AreEqual(1940.0M, price, "GetColumn");
        }
        public void HavingWithSimpleExpression()
        {
            OrderItemCollection coll = new OrderItemCollection();

            coll.es.Connection.Name = "ForeignKeyTest";

            OrderItemQuery q = new OrderItemQuery();

            //q.es2.Connection.Name = "ForeignKeyTest";

            q.Select(q.OrderID, q.Quantity.Sum().As("TotalQty"));
            q.Where(q.Discount.IsNull());
            q.GroupBy(q.OrderID);

            switch (coll.es.Connection.ProviderSignature.DataProviderName)
            {
            case "EntitySpaces.SqlServerCeProvider":
            case "EntitySpaces.SqlServerCe4Provider":
            case "EntitySpaces.VistaDBProvider":
            case "EntitySpaces.VistaDB4Provider":
                q.Having(q.Quantity.Sum() > 100);
                q.OrderBy("<TotalQty>", esOrderByDirection.Descending);
                break;

            case "EntitySpaces.SQLiteProvider":
                q.Having((q.Quantity * 1).Sum() > 100);
                q.OrderBy(q.Quantity.Sum().Descending);
                break;

            default:
                q.Having(q.Quantity.Sum() > 100);
                q.OrderBy(q.Quantity.Sum().Descending);
                break;
            }

            Assert.IsTrue(coll.Load(q), "Load");
            Assert.AreEqual(3, coll.Count, "Count");

            int qty = Convert.ToInt32(coll[0].GetColumn("TotalQty"));

            Assert.AreEqual(240, qty, "GetColumn");
        }