internal void CopyExpressionTranslation(NhLinqExpression other) { ExpressionToHqlTranslationResults = other.ExpressionToHqlTranslationResults; ParameterDescriptors = other.ParameterDescriptors; // Type could have been overridden by translation. Type = other.Type; }
public IASTNode Translate(ISessionFactoryImplementor sessionFactory, bool filter) { if (ExpressionToHqlTranslationResults != null) { // Query has already been translated. Arguments do not really matter, because queries are anyway tied // to a single session factory and cannot switch from being a filter query (query on a mapped collection) // or not. return(DuplicateTree(ExpressionToHqlTranslationResults.Statement.AstNode)); } var requiredHqlParameters = new List <NamedParameterDescriptor>(); var queryModel = NhRelinqQueryParser.Parse(_expression); var visitorParameters = new VisitorParameters(sessionFactory, _constantToParameterMap, requiredHqlParameters, new QuerySourceNamer(), TargetType, QueryMode); ExpressionToHqlTranslationResults = QueryModelVisitor.GenerateHqlQuery(queryModel, visitorParameters, true, ReturnType); if (ExpressionToHqlTranslationResults.ExecuteResultTypeOverride != null) { Type = ExpressionToHqlTranslationResults.ExecuteResultTypeOverride; } ParameterDescriptors = requiredHqlParameters.AsReadOnly(); CanCachePlan = CanCachePlan && // If some constants do not have matching HQL parameters, their values from first query will // be embedded in the plan and reused for subsequent queries: do not cache the plan. !ParameterValuesByName .Keys .Except(requiredHqlParameters.Select(p => p.Name)) .Any(); // The ast node may be altered by caller, duplicate it for preserving the original one. return(DuplicateTree(ExpressionToHqlTranslationResults.Statement.AstNode)); }
public IASTNode Translate(ISessionFactoryImplementor sessionFactory, bool filter) { var requiredHqlParameters = new List <NamedParameterDescriptor>(); var queryModel = NhRelinqQueryParser.Parse(_expression); var visitorParameters = new VisitorParameters(sessionFactory, _constantToParameterMap, requiredHqlParameters, new QuerySourceNamer(), TargetType, QueryMode); ExpressionToHqlTranslationResults = QueryModelVisitor.GenerateHqlQuery(queryModel, visitorParameters, true, ReturnType); if (ExpressionToHqlTranslationResults.ExecuteResultTypeOverride != null) { Type = ExpressionToHqlTranslationResults.ExecuteResultTypeOverride; } ParameterDescriptors = requiredHqlParameters.AsReadOnly(); CanCachePlan = CanCachePlan && // If some constants do not have matching HQL parameters, their values from first query will // be embedded in the plan and reused for subsequent queries: do not cache the plan. !ParameterValuesByName .Keys .Except(requiredHqlParameters.Select(p => p.Name)) .Any(); return(ExpressionToHqlTranslationResults.Statement.AstNode); }
public IASTNode Translate(ISessionFactoryImplementor sessionFactory, bool filter) { var requiredHqlParameters = new List <NamedParameterDescriptor>(); var querySourceNamer = new QuerySourceNamer(); var queryModel = NhRelinqQueryParser.Parse(_expression); var visitorParameters = new VisitorParameters(sessionFactory, _constantToParameterMap, requiredHqlParameters, querySourceNamer); ExpressionToHqlTranslationResults = QueryModelVisitor.GenerateHqlQuery(queryModel, visitorParameters, true); ParameterDescriptors = requiredHqlParameters.AsReadOnly(); return(ExpressionToHqlTranslationResults.Statement.AstNode); }
public IASTNode Translate(ISessionFactoryImplementor sessionFactory) { var requiredHqlParameters = new List<NamedParameterDescriptor>(); var querySourceNamer = new QuerySourceNamer(); var queryModel = NhRelinqQueryParser.Parse(_expression); var visitorParameters = new VisitorParameters(sessionFactory, _constantToParameterMap, requiredHqlParameters, querySourceNamer); ExpressionToHqlTranslationResults = QueryModelVisitor.GenerateHqlQuery(queryModel, visitorParameters, true); ParameterDescriptors = requiredHqlParameters.AsReadOnly(); return ExpressionToHqlTranslationResults.Statement.AstNode; }
public IASTNode Translate(ISessionFactory sessionFactory) { //if (_astNode == null) { var requiredHqlParameters = new List<NamedParameterDescriptor>(); // TODO - can we cache any of this? var queryModel = NhRelinqQueryParser.Parse(_expression); ExpressionToHqlTranslationResults = QueryModelVisitor.GenerateHqlQuery(queryModel, _constantToParameterMap, requiredHqlParameters); ParameterDescriptors = requiredHqlParameters.AsReadOnly(); _astNode = ExpressionToHqlTranslationResults.Statement.AstNode; } return _astNode; }
public IASTNode Translate(ISessionFactoryImplementor sessionFactory) { //if (_astNode == null) { var requiredHqlParameters = new List <NamedParameterDescriptor>(); // TODO - can we cache any of this? var queryModel = NhRelinqQueryParser.Parse(_expression); ExpressionToHqlTranslationResults = QueryModelVisitor.GenerateHqlQuery(queryModel, new VisitorParameters( sessionFactory, _constantToParameterMap, requiredHqlParameters), true); ParameterDescriptors = requiredHqlParameters.AsReadOnly(); _astNode = ExpressionToHqlTranslationResults.Statement.AstNode; } return(_astNode); }
internal void CopyExpressionTranslation(NhLinqExpression other) { ExpressionToHqlTranslationResults = other.ExpressionToHqlTranslationResults; ParameterDescriptors = other.ParameterDescriptors; }