public void ComplexTest2()
        {
            var location1 = Location.NewObject("Personenstra", "1111", Country.BurkinaFaso, 3, "Ouagadougou");
            var location2 = Location.NewObject("Gassengasse", "22", Country.Australia, 12, "Sydney");
            var location3 = Location.NewObject("Gassengasse", "22", Country.Austria, 100, "Vienna");
            var person1   = Person.NewObject("Pierre", "Oerson", location1);
            var person2   = Person.NewObject("Piea", "Muster", location3);
            var person3   = Person.NewObject("Minny", "Mauser", location3);

            location1.Owner = person1;
            location2.Owner = person2;
            location3.Owner = person3;

            NHibernateSaveOrUpdate(location1, location2, location3, person1, person2, person3);

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from l in NHQueryFactory.Queryable <Location>(session)
                            from p in NHQueryFactory.Queryable <Person>(session)
                            where (l.Owner == p) && (p.Location == l)
                            select p;

                var result = query.ToList();

                Assert.IsTrue(result.Any(m => m.NHibernateId == person1.NHibernateId));
                Assert.IsTrue(result.Any(m => m.NHibernateId == person3.NHibernateId));
            }
        }
Ejemplo n.º 2
0
        public void SelectFrom()
        {
            // Implement VisitMainFromClause, VisitSelectClause
            // Implement VisitQuerySourceReferenceExpression

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from pn in NHQueryFactory.Queryable <PhoneNumber> (session)
                            select pn;

                var nhibernateQuery = CreateNHQuery(session, query.Expression);
                Assert.That(nhibernateQuery.QueryString, Is.EqualTo("select pn from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.PhoneNumber as pn"));

                var result = query.ToList();
                Assert.That(result, Is.EquivalentTo(new[] { _phoneNumber, _phoneNumber2, _phoneNumber3, _phoneNumber4, _phoneNumber5 }));
            }
        }
Ejemplo n.º 3
0
        public void SelectFromCount()
        {
            // Implement VisitResultOperator

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from pn in NHQueryFactory.Queryable <PhoneNumber> (session)
                            select pn;

                var nhibernateQuery = CreateNHQuery(session, MakeExpression(query, q => q.Count()));
                Assert.That(nhibernateQuery.QueryString,
                            Is.EqualTo("select cast(count(pn) as int) from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.PhoneNumber as pn"));

                var result = query.Count();
                Assert.That(result, Is.EqualTo(5));
            }
        }
        public void SelectFromOrderBy()
        {
            // Implement VisitOrderByClause

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from pn in NHQueryFactory.Queryable <PhoneNumber>(session)
                            orderby pn.Number, pn.CountryCode
                select pn;

                var nhibernateQuery = CreateNHQuery(session, query.Expression);
                Assert.That(nhibernateQuery.QueryString,
                            Is.EqualTo("select pn from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.PhoneNumber as pn order by pn.Number, pn.CountryCode"));

                //var result = query.ToList();
                //Assert.That(result, Is.EqualTo(new[] { _phoneNumber, _phoneNumber2, _phoneNumber4, _phoneNumber3, _phoneNumber5 }));
            }
        }
        public void SelectFromWhere_WithContains()
        {
            // Implement VisitMethodCallExpression

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from p in NHQueryFactory.Queryable <Person>(session)
                            where p.Surname.Contains(p.FirstName)
                            select p;

                var nhibernateQuery = CreateNHQuery(session, query.Expression);
                Assert.That(nhibernateQuery.QueryString,
                            Is.EqualTo("select p from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.Person as p where (p.Surname like '%'+p.FirstName+'%')"));

                //var result = query.ToList();
                //Assert.That(result, Is.EquivalentTo(new[] { _person4 }));
            }
        }
        public void SelectFromWhere()
        {
            // Implement VisitWhereClause
            // Implement VisitBinaryExpression (Equal), VisitMemberExpression, VisitConstantExpression (+ ParameterAggregator, etc.)

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from pn in NHQueryFactory.Queryable <PhoneNumber>(session)
                            where pn.CountryCode == "11111"
                            select pn;

                var nhibernateQuery = CreateNHQuery(session, query.Expression);
                Assert.That(nhibernateQuery.QueryString,
                            Is.EqualTo("select pn from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.PhoneNumber as pn where (pn.CountryCode = :p1)"));

                //var result = query.ToList();
                //Assert.That(result, Is.EquivalentTo(new[] { _phoneNumber, _phoneNumber3, _phoneNumber4, _phoneNumber5 }));
            }
        }
        public void SelectFromWhere_WithPlusMinus()
        {
            // Implement VisitBinaryExpression (Add/Subtract)

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from l in NHQueryFactory.Queryable <Location>(session)
                            where ((l.ZipCode + 1) == 12346) || ((l.ZipCode - 99990) == 9)
                            select l;

                var nhibernateQuery = CreateNHQuery(session, query.Expression);
                Assert.That(nhibernateQuery.QueryString,
                            Is.EqualTo("select l from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.Location as l "
                                       + "where (((l.ZipCode + :p1) = :p2) or ((l.ZipCode - :p3) = :p4))"));

                //var result = query.ToList();
                //Assert.That(result, Is.EquivalentTo(new[] { _location, _location2 }));
            }
        }
        public void SelectFromWhere_WithAndOr()
        {
            // Implement VisitBinaryExpression (And/AndAlso/Or/OrElse)

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from pn in NHQueryFactory.Queryable <PhoneNumber>(session)
                            where pn.CountryCode == "11111" || (pn.Person.FirstName == "Pierre" && pn.Person.Surname == "Oerson")
                            select pn;

                var nhibernateQuery = CreateNHQuery(session, query.Expression);
                Assert.That(nhibernateQuery.QueryString,
                            Is.EqualTo("select pn from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.PhoneNumber as pn "
                                       + "where ((pn.CountryCode = :p1) or ((pn.Person.FirstName = :p2) and (pn.Person.Surname = :p3)))"));

                //var result = query.ToList();
                //Assert.That(result, Is.EquivalentTo(new[] { _phoneNumber, _phoneNumber2, _phoneNumber3, _phoneNumber4, _phoneNumber5 }));
            }
        }
        public void SelectFromFromWhere()
        {
            // Implement VisitAdditionalFromClause

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from pn in NHQueryFactory.Queryable <PhoneNumber>(session)
                            from p in NHQueryFactory.Queryable <Person>(session)
                            where pn.Person == p && pn.CountryCode == "22222"
                            select p;

                var nhibernateQuery = CreateNHQuery(session, query.Expression);
                Assert.That(nhibernateQuery.QueryString,
                            Is.EqualTo("select p from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.PhoneNumber as pn, "
                                       + "NHibernate.ReLinq.Sample.UnitTests.DomainObjects.Person as p where ((pn.Person = p) and (pn.CountryCode = :p1))"));

                //var result = query.ToList();
                //Assert.That(result, Is.EquivalentTo(new[] { _person }));
            }
        }
        public void ComplexTest()
        {
            var location1 = Location.NewObject("Personenstra遝", "1111", Country.BurkinaFaso, 3, "Ouagadougou");
            var location2 = Location.NewObject("Gassengasse", "12", Country.Australia, 22, "Sydney");
            var location3 = Location.NewObject("Howard Street", "100", Country.Australia, 22, "Sydney");
            var person1   = Person.NewObject("Pierre", "Oerson", location2);
            var person2   = Person.NewObject("Piea", "Muster", location1);
            var person3   = Person.NewObject("Minny", "Mauser", location2);

            NHibernateSaveOrUpdate(location1, location2, location3, person1, person2, person3);

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from l in NHQueryFactory.Queryable <Location>(session)
                            from p in NHQueryFactory.Queryable <Person>(session)
                            where (((((3 * l.ZipCode - 3) / 7)) == 9) &&
                                   p.Surname.Contains("M") && p.Location == l)
                            select l;

                var result = query.ToList().First();
                Assert.AreEqual(result.NHibernateId, location2.NHibernateId);
            }
        }
        public void SelectFromWhereOrderByFrom_ClauseOrder()
        {
            // Implicitly sorted via QueryPartsAggregator class

            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from p in NHQueryFactory.Queryable <Person>(session)
                            where p.Surname == "Oerson"
                            orderby p.Surname
                            join pn in NHQueryFactory.Queryable <PhoneNumber>(session) on p equals pn.Person
                            select pn;

                var nhibernateQuery = CreateNHQuery(session, query.Expression);
                Assert.That(nhibernateQuery.QueryString,
                            Is.EqualTo("select pn from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.Person as p, "
                                       + "NHibernate.ReLinq.Sample.UnitTests.DomainObjects.PhoneNumber as pn "
                                       + "where (p.Surname = :p1) and (p = pn.Person) "
                                       + "order by p.Surname"));

                //var result = query.ToList();
                //Assert.That(result, Is.EquivalentTo(new[] { _phoneNumber2, _phoneNumber3 }));
            }
        }
        public void SelectFromFromWhereWhereOrderByOrderBy()
        {
            using (ISession session = _sessionFactory.OpenSession())
            {
                var query = from p in NHQueryFactory.Queryable <Person>(session)
                            from pn in NHQueryFactory.Queryable <PhoneNumber>(session)
                            where p.Surname.Contains("M")
                            where p == pn.Person
                            orderby pn.AreaCode
                            orderby p.Surname
                            orderby p.FirstName
                            select pn;

                var nhibernateQuery = CreateNHQuery(session, query.Expression);
                Assert.That(nhibernateQuery.QueryString,
                            Is.EqualTo("select pn from NHibernate.ReLinq.Sample.UnitTests.DomainObjects.Person as p, "
                                       + "NHibernate.ReLinq.Sample.UnitTests.DomainObjects.PhoneNumber as pn "
                                       + "where (p.Surname like '%'+:p1+'%') and (p = pn.Person) "
                                       + "order by p.FirstName, p.Surname, pn.AreaCode"));

                //var result = query.ToList();
                //Assert.That(result, Is.EqualTo(new[] { _phoneNumber, _phoneNumber4, _phoneNumber5 }));
            }
        }