public async Task JoinedSubclassAsync()
        {
            IStatistics statistics = Sfi.Statistics;

            statistics.Clear();

            ISession     s = OpenSession();
            ITransaction t = s.BeginTransaction();

            Salesperson mark = new Salesperson();

            mark.Name            = "Mark";
            mark.Title           = "internal sales";
            mark.Sex             = 'M';
            mark.Address.address = "buckhead";
            mark.Address.zip     = "30305";
            mark.Address.country = "USA";

            Person joe = new Person();

            joe.Name            = "Joe";
            joe.Address.address = "San Francisco";
            joe.Address.zip     = "XXXXX";
            joe.Address.country = "USA";
            joe.Sex             = 'M';
            joe.Salesperson     = mark;
            mark.Customers.Add(joe);

            await(s.SaveAsync(mark));
            await(t.CommitAsync());

            Assert.AreEqual(2, statistics.EntityInsertCount);
            Assert.IsTrue(5 >= statistics.PrepareStatementCount);

            statistics.Clear();

            t = s.BeginTransaction();
            await(s.DeleteAsync(mark));
            await(t.CommitAsync());

            Assert.AreEqual(2, statistics.EntityDeleteCount);
            Assert.AreEqual(1, statistics.PrepareStatementCount);

            t = s.BeginTransaction();
            IList names = await(s.CreateQuery("select p.name from Person p").ListAsync());

            Assert.AreEqual(0, names.Count);
            await(t.CommitAsync());

            s.Close();
        }
		public void JoinedSubclass()
		{
			IStatistics statistics = sessions.Statistics;
			statistics.Clear();

			ISession s = OpenSession();
			ITransaction t = s.BeginTransaction();

			Salesperson mark = new Salesperson();
			mark.Name = "Mark";
			mark.Title = "internal sales";
			mark.Sex = 'M';
			mark.Address.address = "buckhead";
			mark.Address.zip = "30305";
			mark.Address.country = "USA";

			Person joe = new Person();
			joe.Name = "Joe";
			joe.Address.address = "San Francisco";
			joe.Address.zip = "XXXXX";
			joe.Address.country = "USA";
			joe.Sex = 'M';
			joe.Salesperson = mark;
			mark.Customers.Add(joe);

			s.Save(mark);
			t.Commit();

			Assert.AreEqual(2, statistics.EntityInsertCount);
			Assert.IsTrue(5 >= statistics.PrepareStatementCount);

			statistics.Clear();

			t = s.BeginTransaction();
			s.Delete(mark);
			t.Commit();

			Assert.AreEqual(2, statistics.EntityDeleteCount);
			Assert.AreEqual(1, statistics.PrepareStatementCount);

			t = s.BeginTransaction();
			IList names = s.CreateQuery("select p.name from Person p").List();
			Assert.AreEqual(0, names.Count);
			t.Commit();

			s.Close();
		}