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)); } }
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 })); } }
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 })); } }