public override IQueryable <TModel> GetAll(ISession currentSession)
        {
            global::NHibernate.ISession nativeSession = GetNativeSession(currentSession);
            nativeSession.Clear();
            IQueryable <TModel> queryable = Query(currentSession);

            return(queryable);
        }
        public override IQueryable <TModel> GetByQuery(ISession currentSession, string queryString, IDictionary parameterDictionary)
        {
            global::NHibernate.ISession nativeSession = GetNativeSession(currentSession);
            ISQLQuery query = nativeSession.CreateSQLQuery(queryString);

            query.AddEntity(modelType);
            return(GetByQuery <TModel>(query, parameterDictionary));
        }
        public override IQueryable <TModel> GetByNamedQuery(ISession currentSession, string queryName, IDictionary parameterDictionary)
        {
            global::NHibernate.ISession nativeSession = GetNativeSession(currentSession);
            IQuery query = nativeSession.GetNamedQuery(queryName);

            query.SetResultTransformer(resultTransformer);
            return(GetByQuery <TModel>(query, parameterDictionary));
        }
 public override void Delete(ISession currentSession, IEnumerable <TModel> models)
 {
     global::NHibernate.ISession nativeSession = GetNativeSession(currentSession);
     foreach (TModel model in models)
     {
         nativeSession.Delete(model);
     }
     nativeSession.Flush();
 }
 public override IEnumerable <TModel> Update(ISession currentSession, IEnumerable <TModel> models)
 {
     global::NHibernate.IStatelessSession nativeSession = GetNativeSession(currentSession);
     foreach (TModel model in models)
     {
         nativeSession.Update(model);
     }
     return(models);
 }
 public override IEnumerable <TModel> Insert(ISession currentSession, IEnumerable <TModel> models)
 {
     global::NHibernate.ISession nativeSession = GetNativeSession(currentSession);
     foreach (TModel model in models)
     {
         nativeSession.SaveOrUpdate(model);
     }
     nativeSession.Flush();
     return(models);
 }
        public override IQueryable <TModel> GetById <TId>(ISession currentSession, TId id)
        {
            global::NHibernate.IStatelessSession nativeSession = GetNativeSession(currentSession);
            //IClassMetadata classMetadata = nativeSession.SessionFactory.GetClassMetadata(ServiceType);
            IClassMetadata classMetadata = null;
            Expression <Func <TModel, bool> > expression = BuildGetByIdExpression(classMetadata, id);
            IQueryable <TModel> queryable = Query(currentSession);
            IQueryable <TModel> result    = queryable.Where(expression);

            return(result);
        }
        private global::NHibernate.ISession GetNativeSession(ISession currentSession)
        {
            NHibernateStatefulSession nHibernateStatefulSession = currentSession as NHibernateStatefulSession;

            global::NHibernate.ISession nativeSession = nHibernateStatefulSession.InnerSession;
            IClassMetadata classMetadata = nativeSession.SessionFactory.GetClassMetadata(modelType);

            if (classMetadata == null)
            {
                throw new MissingModelMappingException <TModel>(nHibernateStatefulSession);
            }

            return(nativeSession);
        }
 public abstract IQueryable <TModel> Query(ISession currentSession);
        public override IQueryable <TModel> GetAll(ISession currentSession)
        {
            IQueryable <TModel> queryable = Query(currentSession);

            return(queryable);
        }
 private global::NHibernate.IStatelessSession GetNativeSession(ISession currentSession)
 {
     return(((NHibernateStatelessSession)currentSession).InnerSession);
 }
 public override void Delete(ISession currentSession, TModel model)
 {
     global::NHibernate.IStatelessSession nativeSession = GetNativeSession(currentSession);
     nativeSession.Delete(model);
 }
 public abstract IQueryable <TModel> GetByQuery(ISession currentSession, string queryString, IDictionary parameterDictionary);
 public override TModel Update(ISession currentSession, TModel model)
 {
     global::NHibernate.IStatelessSession nativeSession = GetNativeSession(currentSession);
     nativeSession.Update(model);
     return(model);
 }
 public abstract TModel Insert(ISession currentSession, TModel model);
 public abstract IEnumerable <TModel> Insert(ISession currentSession, IEnumerable <TModel> models);
 public abstract TModel Update(ISession currentSession, TModel model);
 public abstract IQueryable <TModel> GetById <TId>(ISession currentSession, TId id);
 public abstract IEnumerable <TModel> Update(ISession currentSession, IEnumerable <TModel> models);
 public abstract void Delete(ISession currentSession, IEnumerable <TModel> models);
 public abstract void Delete(ISession currentSession, TModel model);