Ejemplo n.º 1
0
        /// <summary>
        /// Добавление запроса
        /// </summary>
        /// <param name="query">Запрос</param>
        /// <param name="key">Строковый идентификатор запроса</param>
        /// <returns></returns>
        public ERP.Infrastructure.Repositories.Criteria.IMultiCriteria Add(ERP.Infrastructure.Repositories.Criteria.IQuery query, string key)
        {
            ValidationUtils.Assert(!String.IsNullOrEmpty(key), "Недопустимый строковый идентификатор запроса.");
            ValidationUtils.Assert(!keys.Contains(key), String.Format("Дублирование строковый идентификатор запроса «{0}» в мультизапросе.", key));
            keys.Add(key);                 //Добавляем идентификатор в коллекцию идентификаторов запросов

            var crit = GetCriteria(query); //Получение критерия NHibernate

            multiCriteria.Add(crit);       //Добавляем запрос в мультизапрос

            return(this);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Приведение запроса от интерфейса к объекту класса
        /// </summary>
        /// <param name="query">Запрос</param>
        /// <returns></returns>
        private global::NHibernate.ICriteria GetCriteria(ERP.Infrastructure.Repositories.Criteria.IQuery query)
        {
            var baseType    = typeof(Criteria <>); //Базовый тип запроса
            var genericType = baseType.MakeGenericType(new Type[1] {
                query.GetParameterType()
            });                                                                        // Дженерик тип запроса

            var obj = Convert.ChangeType(query, genericType);                          //Приводим интерфейс к дженерик типу запроса

            var methodCompile = genericType.GetMethod("GetCriteria", Type.EmptyTypes); //Получаем метод компилирования в критерий NHibernate

            return(methodCompile.Invoke(obj, null) as global::NHibernate.ICriteria);   //Получаем критерий запроса NHibernate
        }