// Constructors /// <summary> /// Initializes a new instance of this class. /// </summary> public SqlCompiler(HandlerAccessor handlers, CompilerConfiguration configuration) { Handlers = handlers; OuterReferences = new BindingCollection <ApplyParameter, Pair <SqlProvider, bool> >(); Mapping = configuration.StorageNode.Mapping; TypeIdRegistry = configuration.StorageNode.TypeIdRegistry; NodeConfiguration = configuration.StorageNode.Configuration; providerInfo = Handlers.ProviderInfo; temporaryTablesSupported = DomainHandler.TemporaryTableManager.Supported; if (!providerInfo.Supports(ProviderFeatures.FullFeaturedBooleanExpressions)) { booleanExpressionConverter = new BooleanExpressionConverter(Driver); } stubColumnMap = new Dictionary <SqlColumnStub, SqlExpression>(); }
// Constructors public ExpressionProcessor( LambdaExpression lambda, HandlerAccessor handlers, SqlCompiler compiler, params IReadOnlyList <SqlExpression>[] sourceColumns) { ArgumentValidator.EnsureArgumentNotNull(lambda, "lambda"); ArgumentValidator.EnsureArgumentNotNull(handlers, "handlers"); ArgumentValidator.EnsureArgumentNotNull(sourceColumns, "sourceColumns"); this.compiler = compiler; // This might be null, check before use! this.lambda = lambda; this.sourceColumns = sourceColumns; providerInfo = handlers.ProviderInfo; driver = handlers.StorageDriver; fixBooleanExpressions = !providerInfo.Supports(ProviderFeatures.FullFeaturedBooleanExpressions); emptyStringIsNull = providerInfo.Supports(ProviderFeatures.TreatEmptyStringAsNull); dateTimeEmulation = providerInfo.Supports(ProviderFeatures.DateTimeEmulation); dateTimeOffsetEmulation = providerInfo.Supports(ProviderFeatures.DateTimeOffsetEmulation); memberCompilerProvider = handlers.DomainHandler.GetMemberCompilerProvider <SqlExpression>(); specialByteArrayComparison = providerInfo.ProviderName.Equals(WellKnown.Provider.Oracle); bindings = new HashSet <QueryParameterBinding>(); activeParameters = new List <ParameterExpression>(); evaluator = new ExpressionEvaluator(lambda); parameterExtractor = new ParameterExtractor(evaluator); if (fixBooleanExpressions) { booleanExpressionConverter = new BooleanExpressionConverter(driver); } if (lambda.Parameters.Count != sourceColumns.Length) { throw Exceptions.InternalError(Strings.ExParametersCountIsNotSameAsSourceColumnListsCount, OrmLog.Instance); } if (sourceColumns.Any(list => list.Any(c => c.IsNullReference()))) { throw Exceptions.InternalError(Strings.ExSourceColumnListContainsNullValues, OrmLog.Instance); } sourceMapping = new Dictionary <ParameterExpression, IReadOnlyList <SqlExpression> >(); }
// Constructors public ExpressionTranslationContext(ProviderInfo providerInfo, StorageDriver driver, BooleanExpressionConverter booleanExpressionConverter) { ProviderInfo = providerInfo; Driver = driver; BooleanExpressionConverter = booleanExpressionConverter; }
public ExpressionTranslationScope(ProviderInfo providerInfo, StorageDriver driver, BooleanExpressionConverter booleanExpressionConverter) : base(new ExpressionTranslationContext(providerInfo, driver, booleanExpressionConverter)) { }