shaperfactory.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 / shaperfactory.cs / 1599186 / shaperfactory.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
// [....]
//----------------------------------------------------------------------------- 
 
using System.Data.Common.QueryCache;
using System.Data.Metadata.Edm; 
using System.Data.Objects;
using System.Data.Objects.Internal;
using System.Data.Query.InternalTrees;
using System.Diagnostics; 
using System.Runtime.CompilerServices;
 
namespace System.Data.Common.Internal.Materialization 
{
    ///  
    /// An immutable type used to generate Shaper instances.
    /// 
    internal abstract class ShaperFactory
    { 
        [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
        internal static ShaperFactory Create(Type elementType, QueryCacheManager cacheManager, ColumnMap columnMap, MetadataWorkspace metadata, SpanIndex spanInfo, MergeOption mergeOption, bool valueLayer) 
        { 
            ShaperFactoryCreator creator = (ShaperFactoryCreator)Activator.CreateInstance(typeof(TypedShaperFactoryCreator<>).MakeGenericType(elementType));
            return creator.TypedCreate(cacheManager, columnMap, metadata, spanInfo, mergeOption, valueLayer); 
        }

        private abstract class ShaperFactoryCreator
        { 
            internal abstract ShaperFactory TypedCreate(QueryCacheManager cacheManager, ColumnMap columnMap, MetadataWorkspace metadata, SpanIndex spanInfo, MergeOption mergeOption, bool valueLayer);
        } 
 
        private sealed class TypedShaperFactoryCreator : ShaperFactoryCreator
        { 
            public TypedShaperFactoryCreator() {}
            internal override ShaperFactory TypedCreate(QueryCacheManager cacheManager, ColumnMap columnMap, MetadataWorkspace metadata, SpanIndex spanInfo, MergeOption mergeOption, bool valueLayer)
            {
                return Translator.TranslateColumnMap(cacheManager, columnMap, metadata, spanInfo, mergeOption, valueLayer); 
            }
        } 
    } 

    ///  
    /// Typed ShaperFactory
    /// 
    internal class ShaperFactory : ShaperFactory
    { 
        private readonly int _stateCount;
        private readonly CoordinatorFactory _rootCoordinatorFactory; 
        private readonly Action _checkPermissions; 
        private readonly MergeOption _mergeOption;
 
        internal ShaperFactory(int stateCount, CoordinatorFactory rootCoordinatorFactory, Action checkPermissions, MergeOption mergeOption)
        {
            _stateCount = stateCount;
            _rootCoordinatorFactory = rootCoordinatorFactory; 
            _checkPermissions = checkPermissions;
            _mergeOption = mergeOption; 
        } 

        ///  
        /// Factory method to create the Shaper for Object Layer queries.
        /// 
        internal Shaper Create(DbDataReader reader, ObjectContext context, MetadataWorkspace workspace, MergeOption mergeOption, bool readerOwned)
        { 
            Debug.Assert(mergeOption == _mergeOption, "executing a query with a different mergeOption than was used to compile the delegate");
            return new Shaper(reader, context, workspace, mergeOption, _stateCount, _rootCoordinatorFactory, _checkPermissions, readerOwned); 
        } 
    }
} 

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