public void RowsCountTransforming()
 {
     DetachedQuery dq = new DetachedQuery("from Foo f where f.Name like :p1");
     dq.SetString("p1", "%1_");
     IRowsCounter rc = QueryRowsCounter.Transforming(dq);
     using (ISession s = OpenSession())
     {
         Assert.AreEqual(5, rc.GetRowsCount(s));
     }
 }
        public void WithSelfCounter()
        {
            DetachedQuery dq = new DetachedQuery("from Foo f where f.Name like :p1");
            dq.SetString("p1", "%1_");
            IPaginable<Foo> fp = new PaginableRowsCounterQuery<Foo>(LastOpenedSession, dq);

            Paginator<Foo> ptor = new Paginator<Foo>(2, fp);
            Assert.IsTrue(ptor.AutoCalcPages);
            Assert.AreEqual(3, ptor.LastPageNumber);
            // check page 2
            IList<Foo> lpage = ptor.GetPage(2);
            Assert.AreEqual(2, lpage.Count);
            Assert.AreEqual(2, ptor.CurrentPageNumber);
            Assert.AreEqual("N12", lpage[0].Name);
            Assert.AreEqual("N13", lpage[1].Name);
        }
 public void PaginableRowsCount()
 {
     DetachedQuery dq = new DetachedQuery("from Foo f where f.Name like :p1");
     dq.SetString("p1", "N_");
     using (ISession s = OpenSession())
     {
         IPaginable<Foo> fp = new PaginableRowsCounterQuery<Foo>(LastOpenedSession, dq);
         IList<Foo> l = fp.GetPage(5, 1);
         Assert.AreEqual(5, l.Count);
         Assert.AreEqual(10, ((IRowsCounter) fp).GetRowsCount(s));
     }
 }
		public void PerformanceDiffSimplyQuery()
		{

			DateTime sDQStart = DateTime.Now;
			DetachedQuery dq = new DetachedQuery("from Foo f where f.Name=:pn and f.Description=:pd");
			dq.SetString("pn", "N2").SetString("pd", "D2");
			using (ISession s = OpenSession())
			{
				IQuery q = dq.GetExecutableQuery(s);
			}
			DateTime sDQStop = DateTime.Now;

			DateTime sQStart = DateTime.Now;
			using (ISession s = OpenSession())
			{
				IQuery q = s.CreateQuery("from Foo f where f.Name=:pn and f.Description=:pd").SetString("pn", "N2").SetString("pd", "D2");
			}
			DateTime sQStop = DateTime.Now;


			Console.WriteLine("DetachedQueryCycle={0} QueryCycl={1}  Diff={2}", sDQStop - sDQStart, sQStop - sQStart,
												(sDQStop - sDQStart) - (sQStop - sQStart));
		}
		public void Serializable()
		{
			DetachedQuery dq = new DetachedQuery("from Foo f where f.Name=:pn and f.Description=:pd");
			dq.SetString("pn", "N2").SetString("pd", "D2");
			byte[] bytes = SerializationHelper.Serialize(dq);

			DetachedQuery dqs = (DetachedQuery)SerializationHelper.Deserialize(bytes);

			using (ISession s = OpenSession())
			{
				dqs.GetExecutableQuery(s).List();
			}
		}
		public void ExecutableQuery()
		{
			// Simply fetch
			IDetachedQuery dq = new DetachedQuery("from Foo");
			using (ISession s = OpenSession())
			{
				IQuery q = dq.GetExecutableQuery(s);
				IList l = q.List();
				Assert.AreEqual(totalFoo, l.Count);
			}

			// With Typed Parameters
			dq = new DetachedQuery("from Foo f where f.Name=:pn and f.Description=:pd");
			dq.SetString("pn", "N2").SetString("pd", "D2");
			using (ISession s = OpenSession())
			{
				IQuery q = dq.GetExecutableQuery(s);
				IList<Foo> l = q.List<Foo>();
				Assert.AreEqual(1, l.Count);
				Assert.AreEqual("N2", l[0].Name);
				Assert.AreEqual("D2", l[0].Description);
			}

			// With UnTyped Parameters
			dq = new DetachedQuery("from Foo f where f.Name=:pn and f.Description=:pd");
			dq.SetParameter("pn", "N2").SetParameter("pd", "D2");
			using (ISession s = OpenSession())
			{
				IQuery q = dq.GetExecutableQuery(s);
				IList<Foo> l = q.List<Foo>();
				Assert.AreEqual(1, l.Count);
				Assert.AreEqual("N2", l[0].Name);
				Assert.AreEqual("D2", l[0].Description);
			}

			// With UnTyped Parameter List
			dq = new DetachedQuery("from Foo f where f.IntValue in (:pn)");
			dq.SetParameterList("pn", new int[] { 2, 3 });
			using (ISession s = OpenSession())
			{
				IQuery q = dq.GetExecutableQuery(s);
				IList<Foo> l = q.List<Foo>();
				Assert.That(l.Count, Is.EqualTo(2));

				Assert.That(l.Contains(new Foo("N2", "D2")), Is.True);
				Assert.That(l.Contains(new Foo("N3", "D3")), Is.True);
			}

			// Pagination
			dq = new DetachedQuery("from Foo f order by f.IntValue");
			dq.SetFirstResult(0).SetMaxResults(2);
			using (ISession s = OpenSession())
			{
				IQuery q = dq.GetExecutableQuery(s);
				IList<Foo> l = q.List<Foo>();
				Assert.AreEqual(2, l.Count);
				Assert.AreEqual("N0", l[0].Name);
				Assert.AreEqual("N1", l[1].Name);
			}
			dq.SetFirstResult(2).SetMaxResults(1);
			using (ISession s = OpenSession())
			{
				IQuery q = dq.GetExecutableQuery(s);
				IList<Foo> l = q.List<Foo>();
				Assert.AreEqual(1, l.Count);
				Assert.AreEqual("N2", l[0].Name);
			}
		}