recordstatescratchpad.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 / internal / materialization / recordstatescratchpad.cs / 1599186 / recordstatescratchpad.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
using System.Collections.Generic; 
using System.Data.Metadata.Edm;
using System.Linq; 
using System.Linq.Expressions;
using System.Runtime.CompilerServices;

namespace System.Data.Common.Internal.Materialization 
{
    ///  
    /// Used in the Translator to aggregate information about a (nested) record 
    /// state.  After the translator visits the columnMaps, it will compile
    /// the recordState(s) which produces an immutable RecordStateFactory that 
    /// can be shared amongst many query instances.
    /// 
    internal class RecordStateScratchpad
    { 
        private int _stateSlotNumber;
        internal int StateSlotNumber 
        { 
            get { return _stateSlotNumber; }
            set { _stateSlotNumber = value; } 
        }

        private int _columnCount;
        internal int ColumnCount 
        {
            get { return _columnCount; } 
            set { _columnCount = value; } 
        }
 
        private DataRecordInfo _dataRecordInfo;
        internal DataRecordInfo DataRecordInfo
        {
            get { return _dataRecordInfo; } 
            set { _dataRecordInfo = value; }
        } 
 
        private Expression _gatherData;
        internal Expression GatherData 
        {
            get { return _gatherData; }
            set { _gatherData = value; }
        } 

        private string[] _propertyNames; 
        internal string[] PropertyNames 
        {
            get { return _propertyNames; } 
            set { _propertyNames = value; }
        }
        private TypeUsage[] _typeUsages;
        internal TypeUsage[] TypeUsages 
        {
            get { return _typeUsages; } 
            set { _typeUsages = value; } 
        }
 
        private List _nestedRecordStateScratchpads = new List();

        [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
        internal RecordStateFactory Compile() 
        {
            RecordStateFactory[] nestedRecordStateFactories = new RecordStateFactory[_nestedRecordStateScratchpads.Count]; 
            for (int i = 0; i < nestedRecordStateFactories.Length; i++) 
            {
                nestedRecordStateFactories[i] = _nestedRecordStateScratchpads[i].Compile(); 
            }

            RecordStateFactory result = (RecordStateFactory)Activator.CreateInstance(typeof(RecordStateFactory), new object[] {
                                                            this.StateSlotNumber, 
                                                            this.ColumnCount,
                                                            nestedRecordStateFactories, 
                                                            this.DataRecordInfo, 
                                                            this.GatherData,
                                                            this.PropertyNames, 
                                                            this.TypeUsages
                                                            });
            return result;
        } 
    }
} 

// 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