All pastes #384344 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-03-07 00:28 UTC
rendered paste body
using System;
using NHibernate;
using NHibernate.Cfg;
using System.Collections.Generic;
using System.Collections;

namespace Peon.Database
{
    public class DataAccess : IDisposable
    {
        private static Configuration cfg;
        private ISessionFactory factory;
        private ISession session;
        private ITransaction transaction;

        public DataAccess() 
        {
            cfg = new Configuration();
            cfg.AddAssembly("Peon.Game");
            factory = cfg.BuildSessionFactory();
            session = factory.OpenSession();            
        }

        public void Save(object obj) 
        {
            transaction = session.BeginTransaction();
            session.Save(obj);
            transaction.Commit();
            session.Close();     
        }

        public T Load<T>(string id) 
        {
            T obj = (T)session.Load(typeof(T), id);
            session.Close();
            return obj;
        }

        public IList Load<T>() 
        {
            IList list =  session.CreateCriteria(typeof(T)).List();
            session.Close();
            return list;
        }

        #region IDisposable Members

        public void Dispose()
        {
            transaction = null;
            session = null;
            factory = null;
            cfg = null;
            GC.Collect();
        }

        #endregion
    }
}