예제 #1
0
        private static TResult AnalyzeSemanticsCommon <TResult>(
            System.Data.Entity.Core.Common.EntitySql.AST.Node astExpr,
            Perspective perspective,
            ParserOptions parserOptions,
            IEnumerable <DbParameterReferenceExpression> parameters,
            IEnumerable <DbVariableReferenceExpression> variables,
            Func <SemanticAnalyzer, System.Data.Entity.Core.Common.EntitySql.AST.Node, TResult> analysisFunction)
            where TResult : class
        {
            TResult result = default(TResult);

            try
            {
                SemanticAnalyzer semanticAnalyzer = new SemanticAnalyzer(SemanticResolver.Create(perspective, parserOptions, parameters, variables));
                return(analysisFunction(semanticAnalyzer, astExpr));
            }
            catch (MetadataException ex)
            {
                throw new EntitySqlException(Strings.GeneralExceptionAsQueryInnerException((object)"Metadata"), (Exception)ex);
            }
            catch (MappingException ex)
            {
                throw new EntitySqlException(Strings.GeneralExceptionAsQueryInnerException((object)"Mapping"), (Exception)ex);
            }
        }
예제 #2
0
 private static ParseResult AnalyzeCommandSemantics(
     System.Data.Entity.Core.Common.EntitySql.AST.Node astExpr,
     Perspective perspective,
     ParserOptions parserOptions,
     IEnumerable <DbParameterReferenceExpression> parameters)
 {
     return(CqlQuery.AnalyzeSemanticsCommon <ParseResult>(astExpr, perspective, parserOptions, parameters, (IEnumerable <DbVariableReferenceExpression>)null, (Func <SemanticAnalyzer, System.Data.Entity.Core.Common.EntitySql.AST.Node, ParseResult>)((analyzer, astExpression) => analyzer.AnalyzeCommand(astExpression))));
 }
예제 #3
0
 private static DbLambda AnalyzeQueryExpressionSemantics(
     System.Data.Entity.Core.Common.EntitySql.AST.Node astQueryCommand,
     Perspective perspective,
     ParserOptions parserOptions,
     IEnumerable <DbParameterReferenceExpression> parameters,
     IEnumerable <DbVariableReferenceExpression> variables)
 {
     return(CqlQuery.AnalyzeSemanticsCommon <DbLambda>(astQueryCommand, perspective, parserOptions, parameters, variables, (Func <SemanticAnalyzer, System.Data.Entity.Core.Common.EntitySql.AST.Node, DbLambda>)((analyzer, astExpr) => analyzer.AnalyzeQueryCommand(astExpr))));
 }