Esempio n. 1
0
        private void VerifyScalarSourceModels(IModels containsBy, Column sourceColumn, string exceptionParamName)
        {
            if (sourceColumn.ScalarSourceModels.Count == 0 && sourceColumn.GetExpression() == null)
            {
                throw new ArgumentException(DiagnosticMessages.Column_EmptyScalarSourceModels, exceptionParamName);
            }

            foreach (var model in sourceColumn.ScalarSourceModels)
            {
                if (!containsBy.Contains(model))
                {
                    throw new ArgumentException(DiagnosticMessages.DbQueryBuilder_InvalidScalarSourceModel(model), exceptionParamName);
                }
            }
        }
Esempio n. 2
0
        private void MergeComputation(Column computationColumn)
        {
            Debug.Assert(computationColumn.IsExpression);

            if (_computationManager == null)
            {
                _computationManager = new ComputationManager();
            }

            var baseColumns = computationColumn.GetExpression().BaseColumns;

            foreach (var baseColumn in baseColumns)
            {
                MergeComputation(baseColumn, computationColumn, true);
            }
        }
Esempio n. 3
0
        private void MergeComputation(Column baseColumn, Column computationColumn, bool isDirect)
        {
            if (baseColumn == computationColumn)
            {
                throw new InvalidOperationException(DiagnosticMessages.ComputationManager_CircularComputation(baseColumn.Name));
            }

            if (baseColumn.ParentModel != null)
            {
                _computationManager.AddDependency(baseColumn, computationColumn, isDirect);
                isDirect = false;
            }

            if (baseColumn.IsExpression)
            {
                var baseBaseColumns = baseColumn.GetExpression().BaseColumns;
                foreach (var baseBaseColumn in baseBaseColumns)
                {
                    MergeComputation(baseBaseColumn, computationColumn, isDirect);
                }
            }
        }