Пример #1
0
        private LegacyCommandTrees.DbNewInstanceExpression CreateNewCollectionInstance(DbNewInstanceExpression inputExpression)
        {
            Debug.Assert(inputExpression != null, "inputExpression != null");
            Debug.Assert(
                inputExpression.ResultType.EdmType.BuiltInTypeKind == BuiltInTypeKind.CollectionType,
                "Collection type expected");

            return(LegacyExpressionBuilder.NewCollection(inputExpression.Arguments.Select(a => a.Accept(this))));
        }
Пример #2
0
        public override LegacyCommandTrees.DbExpression Visit(DbCaseExpression expression)
        {
            Debug.Assert(expression != null, "expression != null");

            return
                (LegacyExpressionBuilder.Case(
                     expression.When.Select(e => e.Accept(this)),
                     expression.Then.Select(e => e.Accept(this)),
                     expression.Else.Accept(this)));
        }
Пример #3
0
        public override LegacyCommandTrees.DbExpression Visit(DbCrossJoinExpression expression)
        {
            Debug.Assert(expression != null, "expression != null");

            return
                (LegacyExpressionBuilder
                 .CrossJoin(
                     expression.Inputs.Select(
                         binding => binding.Expression.Accept(this).BindAs(binding.VariableName))));
        }
Пример #4
0
        private LegacyCommandTrees.DbNewInstanceExpression CreateNewRowTypeInstance(DbNewInstanceExpression inputExpression)
        {
            Debug.Assert(inputExpression != null, "inputExpression != null");
            Debug.Assert(
                inputExpression.ResultType.EdmType.BuiltInTypeKind == BuiltInTypeKind.RowType,
                "Row type expected");

            var arguments = new KeyValuePair <string, LegacyCommandTrees.DbExpression> [inputExpression.Arguments.Count];

            for (var argIdx = 0; argIdx < arguments.Length; argIdx++)
            {
                arguments[argIdx] =
                    new KeyValuePair <string, LegacyCommandTrees.DbExpression>(
                        ((RowType)inputExpression.ResultType.EdmType).Properties[argIdx].Name,
                        inputExpression.Arguments[argIdx].Accept(this));
            }

            return(LegacyExpressionBuilder.NewRow(arguments));
        }