ExpressionBindings.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / CommandTrees / ExpressionBindings.cs / 1305376 / ExpressionBindings.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 

using System; 
using System.Collections.Generic;
using System.Diagnostics;

using System.Data.Common; 
using System.Data.Common.Utils;
using System.Data.Metadata.Edm; 
using System.Data.Common.CommandTrees.Internal; 
using System.Data.Common.CommandTrees.ExpressionBuilder;
 
namespace System.Data.Common.CommandTrees
{
    /// 
    /// Describes a binding for an expression. Conceptually similar to a foreach loop 
    /// in C#. The DbExpression property defines the collection being iterated over,
    /// while the Var property provides a means to reference the current element 
    /// of the collection during the iteration. DbExpressionBinding is used to describe the set arguments 
    /// to relational expressions such as , 
    /// and . 
    /// 
    /// 
    /// 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] 
    public sealed class DbExpressionBinding
    { 
        private readonly DbExpression _expr; 
        private readonly DbVariableReferenceExpression _varRef;
 
        internal DbExpressionBinding(DbExpression input, DbVariableReferenceExpression varRef)
        {
            Debug.Assert(input != null, "DbExpressionBinding input cannot be null");
            Debug.Assert(varRef != null, "DbExpressionBinding variable cannot be null"); 

            _expr = input; 
            _varRef = varRef; 
        }
 
        /// 
        /// Gets the  that defines the input set.
        /// 
        public DbExpression Expression { get { return _expr; } } 

        ///  
        /// Gets the name assigned to the element variable. 
        /// 
        public string VariableName { get { return _varRef.VariableName; } } 

        /// 
        /// Gets the type metadata of the element variable.
        ///  
        public TypeUsage VariableType { get { return _varRef.ResultType; } }
 
        ///  
        /// Gets the  that references the element variable.
        ///  
        public DbVariableReferenceExpression Variable { get { return _varRef;} }
    }

    ///  
    /// Defines the binding for the input set to a .
    /// In addition to the properties of , DbGroupExpressionBinding 
    /// also provides access to the group element via the  variable reference 
    /// and to the group aggregate via the  property.
    ///  
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")]
    public sealed class DbGroupExpressionBinding
    {
        private /*readonly*/ DbExpression _expr; 
        private readonly DbVariableReferenceExpression _varRef;
        private readonly DbVariableReferenceExpression _groupVarRef; 
        private  DbGroupAggregate _groupAggregate; 

        internal DbGroupExpressionBinding(DbExpression input, DbVariableReferenceExpression inputRef, DbVariableReferenceExpression groupRef) 
        {
            _expr = input;
            _varRef = inputRef;
            _groupVarRef = groupRef; 
        }
 
        ///  
        /// Gets the  that defines the input set.
        ///  
        public DbExpression Expression { get { return _expr; } }

        /// 
        /// Gets the name assigned to the element variable. 
        /// 
        public string VariableName { get { return _varRef.VariableName; } } 
 
        /// 
        /// Gets the type metadata of the element variable. 
        /// 
        public TypeUsage VariableType { get { return _varRef.ResultType; } }

        ///  
        /// Gets the DbVariableReferenceExpression that references the element variable.
        ///  
        public DbVariableReferenceExpression Variable { get { return _varRef; } } 

        ///  
        /// Gets the name assigned to the group element variable.
        /// 
        public string GroupVariableName { get { return _groupVarRef.VariableName; } }
 
        /// 
        /// Gets the type metadata of the group element variable. 
        ///  
        public TypeUsage GroupVariableType { get { return _groupVarRef.ResultType; } }
 
        /// 
        /// Gets the DbVariableReferenceExpression that references the group element variable.
        /// 
        public DbVariableReferenceExpression GroupVariable { get { return _groupVarRef; } } 

        ///  
        /// Gets the DbGroupAggregate that represents the collection of elements of the group. 
        /// 
        public DbGroupAggregate GroupAggregate 
        {
            get
            {
                if (_groupAggregate == null) 
                {
                    _groupAggregate = DbExpressionBuilder.GroupAggregate(this.GroupVariable); 
                } 
                return _groupAggregate;
            } 
        }
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK