public Approach GetApproach(Guid id)
        {
            NHApproachDto dto = null;

            using (ISession session = sessionFactory.OpenSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    dto = session.QueryOver <NHApproachDto>().Where(x => x.Id == id).SingleOrDefault();
                    transaction.Commit();
                }
            }

            if (dto == null)
            {
                return(null);
            }

            return(this.approachFactory.CreateApproach(dto.Id, dto.Name, dto.Criteria));
        }
        public void Save(Approach approach)
        {
            if (approach == null)
            {
                throw new ArgumentNullException("approach");
            }

            using (ISession session = this.sessionFactory.OpenSession())
            {
                using (ITransaction transaction = session.BeginTransaction())
                {
                    NHApproachDto dto = new NHApproachDto();
                    dto.Id       = approach.Id;
                    dto.Name     = approach.Name.Value;
                    dto.Criteria = approach.Criteria.Value;
                    ApproachEsa esa = approach.Esa;
                    dto.EsaId = esa != null ? (Guid?)esa.Id : null;

                    session.SaveOrUpdate(dto);

                    transaction.Commit();
                }
            }
        }