public void CanReadAndSavePersonWithCats()
        {
            int personid;
            using (var session = factory.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    // create a couple of Cats each with connected to Person
                    var person = new Person { Name = new Name { First = "Olo", Last = "Bolus" } };
                    session.Save(person);
                    personid = person.Id;
                    Console.WriteLine(person.Id);
                    person.AddCat(new Cat { Name = "Filip" });
                    person.AddCat(new Cat { Name = "Nick" });
                   
                    session.Save(person);
                    transaction.Commit();
                }
			}
			using (var session = factory.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
					 var dbPerson = session.Get<Person>(personid);
					Assert.AreEqual(2, dbPerson.Cats.Count);
				}
            }
        }
        public void FuturesTest()
        {
            int personid;
			using (var session = factory.OpenSession())
			{
				using (var transaction = session.BeginTransaction())
				{
					var person = new Person { Name = new Name { First = "Olo", Last = "Bolus" } };
					Console.WriteLine(person.Id);
					person.AddCat(new Cat { Name = "Filip" });
					person.AddCat(new Cat { Name = "Nick" });
					session.Save(person);
					personid = person.Id;
					transaction.Commit();
				}
			}
            using (var session = factory.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var dbPerson = session.CreateCriteria<Person>().
						Add(Expression.Eq("Id", personid)).
						SetFetchMode("Cats", FetchMode.Join).
						Future<Person>();
                    var catscount = session.CreateCriteria<Cat>()
						.SetProjection(Projections.Count(Projections.Id()))
						.FutureValue<int>();
                    transaction.Commit();
					Assert.AreEqual(2, dbPerson.First<Person>().Cats.Count);
					Assert.AreEqual(2, catscount.Value);
                }
            }
        }
 public void CanReadAndSavePersonWithTwoSessions()
 {
     int personid;
     Person dbPerson;
     using (var session = factory.OpenSession())
     {
         using (var transaction = session.BeginTransaction())
         {
             var person = new Person { Name = new Name { First = "Olo", Last = "Bolus" } };
             personid = person.Id;
             Console.WriteLine(person.Id);
             person.AddCat(new Cat { Name = "Filip" });
             person.AddCat(new Cat { Name = "Nick" });
             person.AddCat(new Cat { Name = "Cage" });
             session.Save(person);
             transaction.Commit();
             personid = person.Id;
         }
         
         dbPerson = session.Get<Person>(personid);
         Assert.AreEqual(3, dbPerson.Cats.Count);
     }
     dbPerson.Name.Last = "New Name";
     using (var session = factory.OpenSession())
     {
         using (var transaction = session.BeginTransaction())
         {
             session.Update(dbPerson);
             transaction.Commit();
         }
         var dbPerson2 = session.Get<Person>(personid);
         Assert.AreEqual(3, dbPerson2.Cats.Count);
         Assert.That(dbPerson2.Name.Last,Is.EqualTo("New Name"));
     }
 }