Exemple #1
0
        /// <summary>
        /// Получить <see cref="LoadingCustomizationStruct"/> для указанного linq-выражения по представлению.
        /// </summary>
        /// <param name="queryExpression">Linq-выражение, по которому будет сформирован <see cref="LoadingCustomizationStruct"/>.</param>
        /// <param name="view">Представление, по которому будут зачитаны данные.</param>
        /// <param name="resolvingViews">Представления мастеров, необходимые для получения их детейлов, в случае динамических представлений. </param>
        /// <returns><see cref="LoadingCustomizationStruct"/>, полученный для указанного linq-выражения по представлению.</returns>
        public static LoadingCustomizationStruct GetLcs <Q>(Expression queryExpression, View view, IEnumerable <View> resolvingViews)
            where Q : IQueryModelVisitor
        {
            var queryModel = UtilsLcs.CreateQueryParser().GetParsedQuery(queryExpression);

            return(GetQueryModelVisitor <Q>(false, view, resolvingViews).GenerateLcs(queryModel));
        }
Exemple #2
0
        /// <summary>
        /// Получить <see cref="LoadingCustomizationStruct"/> для указанного linq-выражения с динамически созданным представлением.
        /// </summary>
        /// <param name="queryExpression">Linq-выражение, по которому будет сформирован <see cref="LoadingCustomizationStruct"/>.</param>
        /// <param name="type">Тип объекта данных, для которого необходимо сформировать <see cref="LoadingCustomizationStruct"/>.</param>
        /// <returns><see cref="LoadingCustomizationStruct"/>, полученный для указанного linq-выражения с динамически созданным представлением.</returns>
        public static LoadingCustomizationStruct GetLcs <Q>(Expression queryExpression, Type type)
            where Q : IQueryModelVisitor
        {
            var queryModel = UtilsLcs.CreateQueryParser().GetParsedQuery(queryExpression);

            if (!type.IsSubclassOf(typeof(DataObject)))
            {
                throw new ArgumentException(string.Format("Тип \"{0}\" должен наследовать DataObject", type));
            }

            var view = new View
            {
                DefineClassType = type,
                Name            = string.Format("DynamicViewFor{0}", type.FullName)
            };

            return(GetQueryModelVisitor <Q>(true, view, null).GenerateLcs(queryModel));
        }