DbProviderServices.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 / Common / DbProviderServices.cs / 3 / DbProviderServices.cs

                            //------------------------------------------------------------------------------ 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....], [....]
//----------------------------------------------------------------------------- 
 
namespace System.Data.Common
{ 

    using System.Collections.Generic;
    using System.Data.Common.CommandTrees;
    using System.Data.Metadata.Edm; 
    using System.Xml;
    using System.Reflection; 
    using System.IO; 
    using System.Data.Entity;
    using System.Diagnostics; 

    /// 
    /// The factory for building command definitions; use the type of this object
    /// as the argument to the IServiceProvider.GetService method on the provider 
    /// factory;
    ///  
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] 
    abstract public class DbProviderServices
    { 
        /// 
        /// Create a Command Definition object given a command tree.
        /// 
        /// command tree for the statement 
        /// an exectable command definition object
        ///  
        /// This method simply delegates to the provider's implementation of CreateDbCommandDefinition. 
        /// 
        public DbCommandDefinition CreateCommandDefinition(DbCommandTree commandTree) 
        {
            EntityUtil.CheckArgumentNull(commandTree, "commandTree");
            StoreItemCollection storeMetadata = (StoreItemCollection)commandTree.MetadataWorkspace.GetItemCollection(DataSpace.SSpace);
            Debug.Assert(storeMetadata.StoreProviderManifest != null, "StoreItemCollection has null StoreProviderManifest?"); 

            return CreateDbCommandDefinition(storeMetadata.StoreProviderManifest, commandTree); 
        } 

        ///  
        /// Create a Command Definition object, given the provider manifest and command tree
        /// 
        /// provider manifest previously retrieved from the store provider
        /// command tree for the statement 
        /// an exectable command definition object
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] 
        protected abstract DbCommandDefinition CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree); 

        ///  
        /// Create a DbCommand object given a command tree.
        /// 
        /// command tree for the statement
        /// a command object 
        internal virtual DbCommand CreateCommand(DbCommandTree commandTree) {
            DbCommandDefinition commandDefinition = CreateCommandDefinition(commandTree); 
            DbCommand command = commandDefinition.CreateCommand(); 
            return command;
        } 

        /// 
        /// Create the default DbCommandDefinition object based on the prototype command
        /// This method is intended for provider writers to build a default command definition 
        /// from a command.
        /// Note: This will clone the prototype 
        ///  
        /// the prototype command
        /// an executable command definition object 
        public virtual DbCommandDefinition CreateCommandDefinition(DbCommand prototype) {
            return DbCommandDefinition.CreateCommandDefinition(prototype);
        }
 
        /// 
        /// Retrieve the provider manifest token based on the specified connection. 
        ///  
        /// The connection for which the provider manifest token should be retrieved.
        ///  
        /// The provider manifest token that describes the specified connection, as determined by the provider.
        /// 
        /// 
        /// This method simply delegates to the provider's implementation of GetDbProviderManifestToken. 
        /// 
        public string GetProviderManifestToken(DbConnection connection) { 
            try 
            {
                string providerManifestToken = GetDbProviderManifestToken(connection); 
                if (providerManifestToken == null)
                {
                    throw EntityUtil.ProviderIncompatible(Strings.ProviderDidNotReturnAProviderManifestToken);
                } 
                return providerManifestToken;
            } 
            catch (ProviderIncompatibleException) 
            {
                throw; 
            }
            catch (Exception e)
            {
                if (EntityUtil.IsCatchableExceptionType(e)) 
                {
                    throw EntityUtil.ProviderIncompatible(Strings.ProviderDidNotReturnAProviderManifestToken, e); 
                } 
                throw;
            } 
        }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")]
        protected abstract string GetDbProviderManifestToken(DbConnection connection); 

        public DbProviderManifest GetProviderManifest(string manifestToken) { 
            try 
            {
                DbProviderManifest providerManifest = GetDbProviderManifest(manifestToken); 
                if (providerManifest == null)
                {
                    throw EntityUtil.ProviderIncompatible(Strings.ProviderDidNotReturnAProviderManifest);
                } 

                return providerManifest; 
            } 
            catch (ProviderIncompatibleException)
            { 
                throw;
            }
            catch (Exception e)
            { 
                if (EntityUtil.IsCatchableExceptionType(e)) {
                    throw EntityUtil.ProviderIncompatible(System.Data.Entity.Strings.ProviderDidNotReturnAProviderManifest, e); 
                } 
                throw;
            } 
        }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")]
        protected abstract DbProviderManifest GetDbProviderManifest(string manifestToken); 

        ///  
        /// Create an instance of DbProviderServices based on the supplied DbConnection 
        /// 
        /// The DbConnection to use 
        /// An instance of DbProviderServices
        public static DbProviderServices GetProviderServices(DbConnection connection) {
            return GetProviderServices(GetProviderFactory(connection));
        } 

        internal static DbProviderFactory GetProviderFactory(string providerInvariantName) 
        { 
            EntityUtil.CheckArgumentNull(providerInvariantName, "providerInvariantName");
            DbProviderFactory factory; 
            try
            {
                factory = DbProviderFactories.GetFactory(providerInvariantName);
            } 
            catch (ArgumentException e)
            { 
                throw EntityUtil.Argument(Strings.EntityClient_InvalidStoreProvider, e); 
            }
            return factory; 
        }

        internal static DbProviderFactory GetProviderFactory(DbConnection connection)
        { 
            EntityUtil.CheckArgumentNull(connection, "connection");
            DbProviderFactory factory = connection.ProviderFactory; 
            if (factory == null) 
            {
                throw EntityUtil.ProviderIncompatible( 
                    System.Data.Entity.Strings.EntityClient_ReturnedNullOnProviderMethod(
                        "get_ProviderFactory",
                        connection.GetType().ToString()));
            } 
            return factory;
        } 
 
        internal static DbProviderServices GetProviderServices(DbProviderFactory factory) {
            EntityUtil.CheckArgumentNull(factory, "factory"); 

            IServiceProvider serviceProvider = factory as IServiceProvider;
            if (serviceProvider == null) {
                throw EntityUtil.ProviderIncompatible(System.Data.Entity.Strings.EntityClient_DoesNotImplementIServiceProvider( 
                    factory.GetType().ToString()));
            } 
 
            DbProviderServices providerServices = serviceProvider.GetService(typeof(DbProviderServices)) as DbProviderServices;
            if (providerServices == null) { 
                throw EntityUtil.ProviderIncompatible(
                    System.Data.Entity.Strings.EntityClient_ReturnedNullOnProviderMethod(
                        "GetService",
                        factory.GetType().ToString())); 
            }
 
            return providerServices; 
        }
 
        /// 
        /// Return an XML reader which represents the CSDL description
        /// 
        /// An XmlReader that represents the CSDL description 
        internal static XmlReader GetConceptualSchemaDescription() {
            return DbProviderServices.GetXmlResource("System.Data.Resources.DbProviderServices.ConceptualSchemaDefinition.csdl"); 
        } 

        internal static XmlReader GetXmlResource(string resourceName) { 
            Assembly executingAssembly = Assembly.GetExecutingAssembly();
            Stream stream = executingAssembly.GetManifestResourceStream(resourceName);
            return XmlReader.Create(stream, null, resourceName);
        } 
    }
 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner  [....], [....]
//----------------------------------------------------------------------------- 
 
namespace System.Data.Common
{ 

    using System.Collections.Generic;
    using System.Data.Common.CommandTrees;
    using System.Data.Metadata.Edm; 
    using System.Xml;
    using System.Reflection; 
    using System.IO; 
    using System.Data.Entity;
    using System.Diagnostics; 

    /// 
    /// The factory for building command definitions; use the type of this object
    /// as the argument to the IServiceProvider.GetService method on the provider 
    /// factory;
    ///  
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] 
    abstract public class DbProviderServices
    { 
        /// 
        /// Create a Command Definition object given a command tree.
        /// 
        /// command tree for the statement 
        /// an exectable command definition object
        ///  
        /// This method simply delegates to the provider's implementation of CreateDbCommandDefinition. 
        /// 
        public DbCommandDefinition CreateCommandDefinition(DbCommandTree commandTree) 
        {
            EntityUtil.CheckArgumentNull(commandTree, "commandTree");
            StoreItemCollection storeMetadata = (StoreItemCollection)commandTree.MetadataWorkspace.GetItemCollection(DataSpace.SSpace);
            Debug.Assert(storeMetadata.StoreProviderManifest != null, "StoreItemCollection has null StoreProviderManifest?"); 

            return CreateDbCommandDefinition(storeMetadata.StoreProviderManifest, commandTree); 
        } 

        ///  
        /// Create a Command Definition object, given the provider manifest and command tree
        /// 
        /// provider manifest previously retrieved from the store provider
        /// command tree for the statement 
        /// an exectable command definition object
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")] 
        protected abstract DbCommandDefinition CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree); 

        ///  
        /// Create a DbCommand object given a command tree.
        /// 
        /// command tree for the statement
        /// a command object 
        internal virtual DbCommand CreateCommand(DbCommandTree commandTree) {
            DbCommandDefinition commandDefinition = CreateCommandDefinition(commandTree); 
            DbCommand command = commandDefinition.CreateCommand(); 
            return command;
        } 

        /// 
        /// Create the default DbCommandDefinition object based on the prototype command
        /// This method is intended for provider writers to build a default command definition 
        /// from a command.
        /// Note: This will clone the prototype 
        ///  
        /// the prototype command
        /// an executable command definition object 
        public virtual DbCommandDefinition CreateCommandDefinition(DbCommand prototype) {
            return DbCommandDefinition.CreateCommandDefinition(prototype);
        }
 
        /// 
        /// Retrieve the provider manifest token based on the specified connection. 
        ///  
        /// The connection for which the provider manifest token should be retrieved.
        ///  
        /// The provider manifest token that describes the specified connection, as determined by the provider.
        /// 
        /// 
        /// This method simply delegates to the provider's implementation of GetDbProviderManifestToken. 
        /// 
        public string GetProviderManifestToken(DbConnection connection) { 
            try 
            {
                string providerManifestToken = GetDbProviderManifestToken(connection); 
                if (providerManifestToken == null)
                {
                    throw EntityUtil.ProviderIncompatible(Strings.ProviderDidNotReturnAProviderManifestToken);
                } 
                return providerManifestToken;
            } 
            catch (ProviderIncompatibleException) 
            {
                throw; 
            }
            catch (Exception e)
            {
                if (EntityUtil.IsCatchableExceptionType(e)) 
                {
                    throw EntityUtil.ProviderIncompatible(Strings.ProviderDidNotReturnAProviderManifestToken, e); 
                } 
                throw;
            } 
        }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")]
        protected abstract string GetDbProviderManifestToken(DbConnection connection); 

        public DbProviderManifest GetProviderManifest(string manifestToken) { 
            try 
            {
                DbProviderManifest providerManifest = GetDbProviderManifest(manifestToken); 
                if (providerManifest == null)
                {
                    throw EntityUtil.ProviderIncompatible(Strings.ProviderDidNotReturnAProviderManifest);
                } 

                return providerManifest; 
            } 
            catch (ProviderIncompatibleException)
            { 
                throw;
            }
            catch (Exception e)
            { 
                if (EntityUtil.IsCatchableExceptionType(e)) {
                    throw EntityUtil.ProviderIncompatible(System.Data.Entity.Strings.ProviderDidNotReturnAProviderManifest, e); 
                } 
                throw;
            } 
        }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")]
        protected abstract DbProviderManifest GetDbProviderManifest(string manifestToken); 

        ///  
        /// Create an instance of DbProviderServices based on the supplied DbConnection 
        /// 
        /// The DbConnection to use 
        /// An instance of DbProviderServices
        public static DbProviderServices GetProviderServices(DbConnection connection) {
            return GetProviderServices(GetProviderFactory(connection));
        } 

        internal static DbProviderFactory GetProviderFactory(string providerInvariantName) 
        { 
            EntityUtil.CheckArgumentNull(providerInvariantName, "providerInvariantName");
            DbProviderFactory factory; 
            try
            {
                factory = DbProviderFactories.GetFactory(providerInvariantName);
            } 
            catch (ArgumentException e)
            { 
                throw EntityUtil.Argument(Strings.EntityClient_InvalidStoreProvider, e); 
            }
            return factory; 
        }

        internal static DbProviderFactory GetProviderFactory(DbConnection connection)
        { 
            EntityUtil.CheckArgumentNull(connection, "connection");
            DbProviderFactory factory = connection.ProviderFactory; 
            if (factory == null) 
            {
                throw EntityUtil.ProviderIncompatible( 
                    System.Data.Entity.Strings.EntityClient_ReturnedNullOnProviderMethod(
                        "get_ProviderFactory",
                        connection.GetType().ToString()));
            } 
            return factory;
        } 
 
        internal static DbProviderServices GetProviderServices(DbProviderFactory factory) {
            EntityUtil.CheckArgumentNull(factory, "factory"); 

            IServiceProvider serviceProvider = factory as IServiceProvider;
            if (serviceProvider == null) {
                throw EntityUtil.ProviderIncompatible(System.Data.Entity.Strings.EntityClient_DoesNotImplementIServiceProvider( 
                    factory.GetType().ToString()));
            } 
 
            DbProviderServices providerServices = serviceProvider.GetService(typeof(DbProviderServices)) as DbProviderServices;
            if (providerServices == null) { 
                throw EntityUtil.ProviderIncompatible(
                    System.Data.Entity.Strings.EntityClient_ReturnedNullOnProviderMethod(
                        "GetService",
                        factory.GetType().ToString())); 
            }
 
            return providerServices; 
        }
 
        /// 
        /// Return an XML reader which represents the CSDL description
        /// 
        /// An XmlReader that represents the CSDL description 
        internal static XmlReader GetConceptualSchemaDescription() {
            return DbProviderServices.GetXmlResource("System.Data.Resources.DbProviderServices.ConceptualSchemaDefinition.csdl"); 
        } 

        internal static XmlReader GetXmlResource(string resourceName) { 
            Assembly executingAssembly = Assembly.GetExecutingAssembly();
            Stream stream = executingAssembly.GetManifestResourceStream(resourceName);
            return XmlReader.Create(stream, null, resourceName);
        } 
    }
 
} 

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