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
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- LinkLabel.cs
- UtilityExtension.cs
- ManagementEventWatcher.cs
- SqlParameterizer.cs
- ToolBarButtonDesigner.cs
- OrderedDictionary.cs
- WindowsTitleBar.cs
- IDictionary.cs
- TextControlDesigner.cs
- ServiceOperationParameter.cs
- CodeMethodReturnStatement.cs
- NativeMethods.cs
- EdmProperty.cs
- CryptoHandle.cs
- PathFigure.cs
- EdmConstants.cs
- FontWeight.cs
- safex509handles.cs
- SingleObjectCollection.cs
- DialogResultConverter.cs
- IndicCharClassifier.cs
- Console.cs
- DateTimeParse.cs
- StatusBarItem.cs
- DetailsViewPagerRow.cs
- EventSinkHelperWriter.cs
- COM2ComponentEditor.cs
- CacheSection.cs
- ToolStripLabel.cs
- ErrorProvider.cs
- XmlnsDefinitionAttribute.cs
- FontDialog.cs
- DSASignatureDeformatter.cs
- WmlValidationSummaryAdapter.cs
- SqlRowUpdatingEvent.cs
- DataGridViewCheckBoxCell.cs
- DbConnectionHelper.cs
- ListControlConvertEventArgs.cs
- DES.cs
- InitializingNewItemEventArgs.cs
- Parser.cs
- ComplexType.cs
- XmlWellformedWriterHelpers.cs
- TextBox.cs
- FormViewUpdatedEventArgs.cs
- TextPattern.cs
- SignedXml.cs
- ParameterCollection.cs
- Pen.cs
- MsmqIntegrationProcessProtocolHandler.cs
- ConditionalAttribute.cs
- RequestCachingSection.cs
- MenuAutomationPeer.cs
- Item.cs
- FindCriteriaElement.cs
- DummyDataSource.cs
- TagPrefixInfo.cs
- DataRowCollection.cs
- SwitchAttribute.cs
- DocumentGridPage.cs
- ListView.cs
- TabControlEvent.cs
- HtmlForm.cs
- XmlStreamStore.cs
- BatchParser.cs
- documentation.cs
- RangeBase.cs
- RegexCompilationInfo.cs
- ExecutionScope.cs
- Tablet.cs
- TraceContext.cs
- EdgeProfileValidation.cs
- RichTextBoxContextMenu.cs
- SqlBulkCopyColumnMappingCollection.cs
- ToolBarOverflowPanel.cs
- DropTarget.cs
- ADMembershipProvider.cs
- ExpressionWriter.cs
- namescope.cs
- RowSpanVector.cs
- TraceLog.cs
- EventLogEntryCollection.cs
- FragmentQueryKB.cs
- TaskExtensions.cs
- ProjectionCamera.cs
- CacheAxisQuery.cs
- ObjectQueryProvider.cs
- IntMinMaxAggregationOperator.cs
- AspNetHostingPermission.cs
- EndpointIdentityConverter.cs
- ByteStack.cs
- WebCategoryAttribute.cs
- ItemList.cs
- ConfigurationPermission.cs
- Panel.cs
- GenericsInstances.cs
- InputLanguageSource.cs
- NativeMethods.cs
- HttpModulesSection.cs
- Itemizer.cs