public void ProjectTransformToDto()
        {
            using (var s = OpenSession())
                using (s.BeginTransaction())
                {
                    PersonSummary summary = null;
                    var           actual  = s.QueryOver <Person>()
                                            .SelectList(list => list
                                                        .SelectGroup(p => p.Name).WithAlias(() => summary.Name)
                                                        .Select(Projections.RowCount()).WithAlias(() => summary.Count))
                                            .OrderByAlias(() => summary.Name).Asc
                                            .TransformUsing(Transformers.AliasToBean <PersonSummary>())
                                            .List <PersonSummary>();

                    Assert.That(actual.Count, Is.EqualTo(2));
                    Assert.That(actual[0].Name, Is.EqualTo("test person 1"));
                    Assert.That(actual[0].Count, Is.EqualTo(2));
                    Assert.That(actual[1].Name, Is.EqualTo("test person 2"));
                    Assert.That(actual[1].Count, Is.EqualTo(1));
                }
        }
        public async Task ProjectTransformToDtoAsync()
        {
            using (var s = OpenSession())
                using (s.BeginTransaction())
                {
                    PersonSummary summary = null;
                    var           actual  = await(s.QueryOver <Person>()
                                                  .SelectList(list => list
                                                              .SelectGroup(p => p.Name).WithAlias(() => summary.Name)
                                                              //GH1985: DateTime.xxxx are not supported in SelectGroup
                                                              .SelectGroup(p => p.BirthDate.Year).WithAlias(() => summary.BirthYear)
                                                              .Select(Projections.RowCount()).WithAlias(() => summary.Count))
                                                  .OrderByAlias(() => summary.Name).Asc
                                                  .TransformUsing(Transformers.AliasToBean <PersonSummary>())
                                                  .ListAsync <PersonSummary>());

                    Assert.That(actual.Count, Is.EqualTo(2));
                    Assert.That(actual[0].Name, Is.EqualTo("test person 1"));
                    Assert.That(actual[0].Count, Is.EqualTo(2));
                    Assert.That(actual[1].Name, Is.EqualTo("test person 2"));
                    Assert.That(actual[1].Count, Is.EqualTo(1));
                }
        }
예제 #3
0
        public void OrderBy()
        {
            ICriteria expected =
                CreateTestCriteria(typeof(Person), "personAlias")
                .AddOrder(Order.Asc("Name"))
                .AddOrder(Order.Desc("Age"))
                .AddOrder(Order.Desc("personAlias.Name"))
                .AddOrder(Order.Asc("personAlias.Age"))
                .AddOrder(Order.Asc("summary"))
                .AddOrder(Order.Desc("Count"));

            Person              personAlias = null;
            PersonSummary       summary     = null;
            IQueryOver <Person> actual      =
                CreateTestQueryOver <Person>(() => personAlias)
                .OrderBy(p => p.Name).Asc
                .ThenBy(p => p.Age).Desc
                .ThenBy(() => personAlias.Name).Desc
                .ThenBy(() => personAlias.Age).Asc
                .OrderByAlias(() => summary).Asc
                .ThenByAlias(() => summary.Count).Desc;

            AssertCriteriaAreEqual(expected, actual);
        }