public void HavingDetachedCriteriaThenCanGetExecutableCriteriaFromStatelessSession()
		{
			var dc = DetachedCriteria.For<Paper>();
			using (IStatelessSession ss = sessions.OpenStatelessSession())
			{
				ICriteria criteria = null;
				Executing.This(()=> criteria = dc.GetExecutableCriteria(ss)).Should().NotThrow();
				criteria.Executing(c => c.List()).NotThrows();
			}
		}
예제 #2
0
        public void DetachedCriteriaCorrelatedQueryExplodes()
        {
            using (ISession session = OpenSession())
            {
                DetachedCriteria memberGroupCriteria
                    = DetachedCriteria
                      .For <MemberGroup>()
                      .CreateAlias("Members", "m")
                      .CreateAlias("Forums", "f")
                      .Add(Restrictions.EqProperty("m.Id", "p.Id"))
                      .SetProjection(Projections.Property("f.Id"))
                    ;

                var ids = new List <Guid>();
                ids.Add(person0Id);
                ids.Add(person1Id);

                DetachedCriteria forumCriteria
                    = DetachedCriteria
                      .For <Forum>("fff")
                      .Add(Restrictions.NotEqProperty("Id", "p.Id"))
                      .Add(Subqueries.PropertyIn("Id", memberGroupCriteria))
                      .SetProjection
                      (
                          Projections.Sum("Dollars")
                      )
                    ;

                DetachedCriteria personCriteria
                    = DetachedCriteria
                      .For <Person>("p")
                      .Add(Restrictions.InG("Id", ids))
                      .SetProjection
                      (
                          Projections
                          .ProjectionList()
                          .Add(Projections.Property("Name"), "Name")
                          .Add(Projections.SubQuery(forumCriteria), "Sum")
                      )
                      .SetResultTransformer(Transformers.AliasToBean(typeof(Bar)))
                    ;

                ICriteria criteria = personCriteria.GetExecutableCriteria(session);
                criteria.Executing(c => c.List()).NotThrows();
            }
        }
예제 #3
0
        public void TestQuery()
        {
            using (ISession session = OpenSession())
            {
                DetachedCriteria page = DetachedCriteria.For <T1>()
                                        .SetFirstResult(3)
                                        .SetMaxResults(7)
                                        .AddOrder(NHibernate.Criterion.Order.Asc(Projections.Id()))
                                        .SetProjection(Projections.Id());

                ICriteria crit = session.CreateCriteria <T1>()
                                 .Add(Subqueries.PropertyIn("id", page))
                                 .SetResultTransformer(new DistinctRootEntityResultTransformer())
                                 .SetFetchMode("Children", NHibernate.FetchMode.Join);

                session.EnableFilter("nameFilter").SetParameter("name", "Another child");

                crit.Executing(c => c.List <T1>()).NotThrows();
            }
        }