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
- DesignerTransaction.cs
- TreePrinter.cs
- ExpressionBuilderContext.cs
- HandlerMappingMemo.cs
- SkinBuilder.cs
- PointLightBase.cs
- WebPartAuthorizationEventArgs.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- PlaceHolder.cs
- WeakEventTable.cs
- XmlDataSource.cs
- IdnElement.cs
- ExpressionDumper.cs
- SiteMapPath.cs
- StickyNoteContentControl.cs
- DecimalConverter.cs
- Cloud.cs
- LexicalChunk.cs
- UnsafeNativeMethods.cs
- ExpressionVisitor.cs
- URIFormatException.cs
- LabelEditEvent.cs
- BaseValidator.cs
- XhtmlConformanceSection.cs
- DateTimeSerializationSection.cs
- PageContentCollection.cs
- GlyphShapingProperties.cs
- AnnotationComponentManager.cs
- Process.cs
- DetailsViewDeleteEventArgs.cs
- ResourceDescriptionAttribute.cs
- WindowsGraphicsWrapper.cs
- BitmapEffect.cs
- unsafenativemethodstextservices.cs
- PackageRelationship.cs
- BitmapFrameDecode.cs
- ComMethodElement.cs
- EncryptedPackage.cs
- SoapWriter.cs
- SetStateDesigner.cs
- CircleHotSpot.cs
- ColumnReorderedEventArgs.cs
- SerialStream.cs
- OracleParameterBinding.cs
- Region.cs
- ToolStripRenderEventArgs.cs
- RepeatButton.cs
- SystemFonts.cs
- OleCmdHelper.cs
- AvTraceFormat.cs
- TraceHandlerErrorFormatter.cs
- HighlightVisual.cs
- FormClosingEvent.cs
- BidOverLoads.cs
- SqlCacheDependencySection.cs
- Decoder.cs
- Matrix.cs
- _KerberosClient.cs
- objectresult_tresulttype.cs
- SQLMoney.cs
- DbProviderSpecificTypePropertyAttribute.cs
- BindStream.cs
- EncodingStreamWrapper.cs
- OutgoingWebResponseContext.cs
- RemoteX509Token.cs
- CaseInsensitiveHashCodeProvider.cs
- DateTimeFormatInfo.cs
- BevelBitmapEffect.cs
- objectquery_tresulttype.cs
- StatusBarItemAutomationPeer.cs
- LogSwitch.cs
- DetailsViewPagerRow.cs
- DBConnectionString.cs
- EventPrivateKey.cs
- DockAndAnchorLayout.cs
- CodeNamespaceImportCollection.cs
- JapaneseCalendar.cs
- ListenerServiceInstallComponent.cs
- RangeValidator.cs
- SessionEndingCancelEventArgs.cs
- __ComObject.cs
- SecurityHelper.cs
- StringUtil.cs
- XsltFunctions.cs
- ReadOnlyDictionary.cs
- PersistenceContextEnlistment.cs
- ObjectToken.cs
- DrawingBrush.cs
- SqlDataSourceEnumerator.cs
- TextServicesDisplayAttribute.cs
- NativeMethods.cs
- DataGridViewRowEventArgs.cs
- Speller.cs
- ResourceExpressionBuilder.cs
- CookieHandler.cs
- FormatConvertedBitmap.cs
- SqlConnectionString.cs
- X509Extension.cs
- StringAttributeCollection.cs
- ConsumerConnectionPoint.cs