ExplicitDiscriminatorMap.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / Query / InternalTrees / ExplicitDiscriminatorMap.cs / 1 / ExplicitDiscriminatorMap.cs

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

using System.Data.Metadata.Edm; 
using System.Collections.Generic;
using System.Linq;

namespace System.Data.Query.InternalTrees 
{
    ///  
    /// Describes user-defined discriminator metadata (e.g. for a basic TPH mapping). Encapsulates 
    /// relevant data from System.Data.Mapping.ViewGenerabetion.DiscriminatorMap (that is to say,
    /// data relevant to the PlanCompiler). This separate class accomplishes two things: 
    ///
    /// 1. Maintain separation of ViewGen and PlanCompiler
    /// 2. Avoid holding references to CQT expressions in ITree ops (which the ViewGen.DiscriminatorMap
    /// holds a few CQT references) 
    /// 
    internal class ExplicitDiscriminatorMap 
    { 
        private readonly System.Collections.ObjectModel.ReadOnlyCollection> m_typeMap;
        private readonly EdmMember m_discriminatorProperty; 
        private readonly System.Collections.ObjectModel.ReadOnlyCollection m_properties;

        internal ExplicitDiscriminatorMap(System.Data.Mapping.ViewGeneration.DiscriminatorMap template)
        { 
            m_typeMap = template.TypeMap;
            m_discriminatorProperty = template.Discriminator.Property; 
            m_properties = template.PropertyMap.Select(propertyValuePair => propertyValuePair.Key) 
                .ToList().AsReadOnly();
        } 

        /// 
        /// Maps from discriminator value to type.
        ///  
        internal System.Collections.ObjectModel.ReadOnlyCollection> TypeMap
        { 
            get { return m_typeMap; } 
        }
 
        /// 
        /// Gets property containing discriminator value.
        /// 
        internal EdmMember DiscriminatorProperty 
        {
            get { return m_discriminatorProperty; } 
        } 

 
        /// 
        /// All properties for the type hierarchy.
        /// 
        internal System.Collections.ObjectModel.ReadOnlyCollection Properties 
        {
            get { return m_properties; } 
        } 

        ///  
        /// Returns the type id for the given entity type, or null if non exists.
        /// 
        internal object GetTypeId(EntityType entityType)
        { 
            object result = null;
            foreach (var discriminatorTypePair in this.TypeMap) 
            { 
                if (discriminatorTypePair.Value.EdmEquals(entityType))
                { 
                    result = discriminatorTypePair.Key;
                    break;
                }
            } 
            return result;
        } 
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 

using System.Data.Metadata.Edm; 
using System.Collections.Generic;
using System.Linq;

namespace System.Data.Query.InternalTrees 
{
    ///  
    /// Describes user-defined discriminator metadata (e.g. for a basic TPH mapping). Encapsulates 
    /// relevant data from System.Data.Mapping.ViewGenerabetion.DiscriminatorMap (that is to say,
    /// data relevant to the PlanCompiler). This separate class accomplishes two things: 
    ///
    /// 1. Maintain separation of ViewGen and PlanCompiler
    /// 2. Avoid holding references to CQT expressions in ITree ops (which the ViewGen.DiscriminatorMap
    /// holds a few CQT references) 
    /// 
    internal class ExplicitDiscriminatorMap 
    { 
        private readonly System.Collections.ObjectModel.ReadOnlyCollection> m_typeMap;
        private readonly EdmMember m_discriminatorProperty; 
        private readonly System.Collections.ObjectModel.ReadOnlyCollection m_properties;

        internal ExplicitDiscriminatorMap(System.Data.Mapping.ViewGeneration.DiscriminatorMap template)
        { 
            m_typeMap = template.TypeMap;
            m_discriminatorProperty = template.Discriminator.Property; 
            m_properties = template.PropertyMap.Select(propertyValuePair => propertyValuePair.Key) 
                .ToList().AsReadOnly();
        } 

        /// 
        /// Maps from discriminator value to type.
        ///  
        internal System.Collections.ObjectModel.ReadOnlyCollection> TypeMap
        { 
            get { return m_typeMap; } 
        }
 
        /// 
        /// Gets property containing discriminator value.
        /// 
        internal EdmMember DiscriminatorProperty 
        {
            get { return m_discriminatorProperty; } 
        } 

 
        /// 
        /// All properties for the type hierarchy.
        /// 
        internal System.Collections.ObjectModel.ReadOnlyCollection Properties 
        {
            get { return m_properties; } 
        } 

        ///  
        /// Returns the type id for the given entity type, or null if non exists.
        /// 
        internal object GetTypeId(EntityType entityType)
        { 
            object result = null;
            foreach (var discriminatorTypePair in this.TypeMap) 
            { 
                if (discriminatorTypePair.Value.EdmEquals(entityType))
                { 
                    result = discriminatorTypePair.Key;
                    break;
                }
            } 
            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