public async Task DoSomethingAsync()
        {
            NonAbstract obj = new NonAbstract();

            using (ISession s = OpenSession())
                using (ITransaction t = s.BeginTransaction())
                {
                    await(s.SaveAsync(obj));
                    await(t.CommitAsync());
                }

            using (ISession s = OpenSession())
                using (ITransaction t = s.BeginTransaction())
                {
                    AbstractBase baseObj = (AbstractBase)await(s.LoadAsync(typeof(AbstractBase), obj.Id));
                    Assert.AreEqual(NonAbstract.AbstractMethodResult, baseObj.AbstractMethod());
                    await(s.DeleteAsync(baseObj));
                    await(t.CommitAsync());
                }
        }
        public void DoSomething()
        {
            NonAbstract obj = new NonAbstract();

            using (ISession s = OpenSession())
                using (ITransaction t = s.BeginTransaction())
                {
                    s.Save(obj);
                    t.Commit();
                }

            using (ISession s = OpenSession())
                using (ITransaction t = s.BeginTransaction())
                {
                    AbstractBase baseObj = (AbstractBase)s.Load(typeof(AbstractBase), obj.Id);
                    Assert.AreEqual(NonAbstract.AbstractMethodResult, baseObj.AbstractMethod());
                    s.Delete(baseObj);
                    t.Commit();
                }
        }