Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / DbXmlEnabledProviderManifest.cs / 1305376 / DbXmlEnabledProviderManifest.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
//---------------------------------------------------------------------
using System.Data.Common;
using System.Diagnostics;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Xml;
using System.Data.EntityModel.SchemaObjectModel;
using System.Data.EntityModel;
using System.Data.Entity;
using System.Data.Metadata.Edm;
namespace System.Data.Common
{
///
/// A specialization of the ProviderManifest that accepts an XmlReader
///
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")]
public abstract class DbXmlEnabledProviderManifest : DbProviderManifest
{
private string _namespaceName;
private System.Collections.ObjectModel.ReadOnlyCollection _primitiveTypes;
private Dictionary> _facetDescriptions = new Dictionary>();
private System.Collections.ObjectModel.ReadOnlyCollection _functions;
private Dictionary _storeTypeNameToEdmPrimitiveType = new Dictionary();
private Dictionary _storeTypeNameToStorePrimitiveType = new Dictionary();
protected DbXmlEnabledProviderManifest(XmlReader reader)
{
if (reader == null)
{
throw EntityUtil.ProviderIncompatible(Strings.IncorrectProviderManifest, new ArgumentNullException("reader"));
}
Load(reader);
}
#region Protected Properties For Fields
public override string NamespaceName
{
get
{
return this._namespaceName;
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Edm")]
protected Dictionary StoreTypeNameToEdmPrimitiveType
{
get
{
return this._storeTypeNameToEdmPrimitiveType;
}
}
protected Dictionary StoreTypeNameToStorePrimitiveType
{
get
{
return this._storeTypeNameToStorePrimitiveType;
}
}
#endregion
///
/// Returns all the FacetDescriptions for a particular type
///
/// the type to return FacetDescriptions for.
/// The FacetDescriptions for the type given.
public override System.Collections.ObjectModel.ReadOnlyCollection GetFacetDescriptions(EdmType type)
{
Debug.Assert(type is PrimitiveType, "DbXmlEnabledProviderManifest.GetFacetDescriptions(): Argument is not a PrimitiveType");
return GetReadOnlyCollection(type as PrimitiveType, _facetDescriptions, Helper.EmptyFacetDescriptionEnumerable);
}
public override System.Collections.ObjectModel.ReadOnlyCollection GetStoreTypes()
{
return _primitiveTypes;
}
///
/// Returns all the edm functions supported by the provider manifest.
///
/// A collection of edm functions.
public override System.Collections.ObjectModel.ReadOnlyCollection GetStoreFunctions()
{
return _functions;
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")]
private void Load(XmlReader reader)
{
Schema schema;
IList errors = SchemaManager.LoadProviderManifest(reader, reader.BaseURI.Length > 0 ? reader.BaseURI : null, true /*checkForSystemNamespace*/, out schema);
if (errors.Count != 0)
{
throw EntityUtil.ProviderIncompatible(Strings.IncorrectProviderManifest + Helper.CombineErrorMessage(errors));
}
_namespaceName = schema.Namespace;
List listOfPrimitiveTypes = new List();
foreach (System.Data.EntityModel.SchemaObjectModel.SchemaType schemaType in schema.SchemaTypes)
{
TypeElement typeElement = schemaType as TypeElement;
if (typeElement != null)
{
PrimitiveType type = typeElement.PrimitiveType;
type.ProviderManifest = this;
type.DataSpace = DataSpace.SSpace;
type.SetReadOnly();
listOfPrimitiveTypes.Add(type);
_storeTypeNameToStorePrimitiveType.Add(type.Name.ToLowerInvariant(), type);
_storeTypeNameToEdmPrimitiveType.Add(type.Name.ToLowerInvariant(), EdmProviderManifest.Instance.GetPrimitiveType(type.PrimitiveTypeKind));
System.Collections.ObjectModel.ReadOnlyCollection descriptions;
if (EnumerableToReadOnlyCollection(typeElement.FacetDescriptions, out descriptions))
{
_facetDescriptions.Add(type, descriptions);
}
}
}
this._primitiveTypes = Array.AsReadOnly(listOfPrimitiveTypes.ToArray());
// load the functions
ItemCollection collection = new EmptyItemCollection();
IEnumerable items = Converter.ConvertSchema(schema, this, collection);
if (!EnumerableToReadOnlyCollection(items, out this._functions))
{
this._functions = Helper.EmptyEdmFunctionReadOnlyCollection;
}
//SetReadOnly on all the Functions
foreach (EdmFunction function in this._functions)
{
function.SetReadOnly();
}
}
private static System.Collections.ObjectModel.ReadOnlyCollection GetReadOnlyCollection(PrimitiveType type, Dictionary> typeDictionary, System.Collections.ObjectModel.ReadOnlyCollection useIfEmpty)
{
System.Collections.ObjectModel.ReadOnlyCollection collection;
if (typeDictionary.TryGetValue(type, out collection))
{
return collection;
}
else
{
return useIfEmpty;
}
}
private static bool EnumerableToReadOnlyCollection(IEnumerable enumerable, out System.Collections.ObjectModel.ReadOnlyCollection collection) where Target : BaseType
{
List list = new List();
foreach (BaseType item in enumerable)
{
if (typeof(Target) == typeof(BaseType) || item is Target)
{
list.Add((Target)item);
}
}
if (list.Count != 0)
{
collection = list.AsReadOnly();
return true;
}
collection = null;
return false;
}
private class EmptyItemCollection : ItemCollection
{
public EmptyItemCollection()
: base(DataSpace.SSpace)
{
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
//---------------------------------------------------------------------
using System.Data.Common;
using System.Diagnostics;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Xml;
using System.Data.EntityModel.SchemaObjectModel;
using System.Data.EntityModel;
using System.Data.Entity;
using System.Data.Metadata.Edm;
namespace System.Data.Common
{
///
/// A specialization of the ProviderManifest that accepts an XmlReader
///
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "Db")]
public abstract class DbXmlEnabledProviderManifest : DbProviderManifest
{
private string _namespaceName;
private System.Collections.ObjectModel.ReadOnlyCollection _primitiveTypes;
private Dictionary> _facetDescriptions = new Dictionary>();
private System.Collections.ObjectModel.ReadOnlyCollection _functions;
private Dictionary _storeTypeNameToEdmPrimitiveType = new Dictionary();
private Dictionary _storeTypeNameToStorePrimitiveType = new Dictionary();
protected DbXmlEnabledProviderManifest(XmlReader reader)
{
if (reader == null)
{
throw EntityUtil.ProviderIncompatible(Strings.IncorrectProviderManifest, new ArgumentNullException("reader"));
}
Load(reader);
}
#region Protected Properties For Fields
public override string NamespaceName
{
get
{
return this._namespaceName;
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Edm")]
protected Dictionary StoreTypeNameToEdmPrimitiveType
{
get
{
return this._storeTypeNameToEdmPrimitiveType;
}
}
protected Dictionary StoreTypeNameToStorePrimitiveType
{
get
{
return this._storeTypeNameToStorePrimitiveType;
}
}
#endregion
///
/// Returns all the FacetDescriptions for a particular type
///
/// the type to return FacetDescriptions for.
/// The FacetDescriptions for the type given.
public override System.Collections.ObjectModel.ReadOnlyCollection GetFacetDescriptions(EdmType type)
{
Debug.Assert(type is PrimitiveType, "DbXmlEnabledProviderManifest.GetFacetDescriptions(): Argument is not a PrimitiveType");
return GetReadOnlyCollection(type as PrimitiveType, _facetDescriptions, Helper.EmptyFacetDescriptionEnumerable);
}
public override System.Collections.ObjectModel.ReadOnlyCollection GetStoreTypes()
{
return _primitiveTypes;
}
///
/// Returns all the edm functions supported by the provider manifest.
///
/// A collection of edm functions.
public override System.Collections.ObjectModel.ReadOnlyCollection GetStoreFunctions()
{
return _functions;
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")]
private void Load(XmlReader reader)
{
Schema schema;
IList errors = SchemaManager.LoadProviderManifest(reader, reader.BaseURI.Length > 0 ? reader.BaseURI : null, true /*checkForSystemNamespace*/, out schema);
if (errors.Count != 0)
{
throw EntityUtil.ProviderIncompatible(Strings.IncorrectProviderManifest + Helper.CombineErrorMessage(errors));
}
_namespaceName = schema.Namespace;
List listOfPrimitiveTypes = new List();
foreach (System.Data.EntityModel.SchemaObjectModel.SchemaType schemaType in schema.SchemaTypes)
{
TypeElement typeElement = schemaType as TypeElement;
if (typeElement != null)
{
PrimitiveType type = typeElement.PrimitiveType;
type.ProviderManifest = this;
type.DataSpace = DataSpace.SSpace;
type.SetReadOnly();
listOfPrimitiveTypes.Add(type);
_storeTypeNameToStorePrimitiveType.Add(type.Name.ToLowerInvariant(), type);
_storeTypeNameToEdmPrimitiveType.Add(type.Name.ToLowerInvariant(), EdmProviderManifest.Instance.GetPrimitiveType(type.PrimitiveTypeKind));
System.Collections.ObjectModel.ReadOnlyCollection descriptions;
if (EnumerableToReadOnlyCollection(typeElement.FacetDescriptions, out descriptions))
{
_facetDescriptions.Add(type, descriptions);
}
}
}
this._primitiveTypes = Array.AsReadOnly(listOfPrimitiveTypes.ToArray());
// load the functions
ItemCollection collection = new EmptyItemCollection();
IEnumerable items = Converter.ConvertSchema(schema, this, collection);
if (!EnumerableToReadOnlyCollection(items, out this._functions))
{
this._functions = Helper.EmptyEdmFunctionReadOnlyCollection;
}
//SetReadOnly on all the Functions
foreach (EdmFunction function in this._functions)
{
function.SetReadOnly();
}
}
private static System.Collections.ObjectModel.ReadOnlyCollection GetReadOnlyCollection(PrimitiveType type, Dictionary> typeDictionary, System.Collections.ObjectModel.ReadOnlyCollection useIfEmpty)
{
System.Collections.ObjectModel.ReadOnlyCollection collection;
if (typeDictionary.TryGetValue(type, out collection))
{
return collection;
}
else
{
return useIfEmpty;
}
}
private static bool EnumerableToReadOnlyCollection(IEnumerable enumerable, out System.Collections.ObjectModel.ReadOnlyCollection collection) where Target : BaseType
{
List list = new List();
foreach (BaseType item in enumerable)
{
if (typeof(Target) == typeof(BaseType) || item is Target)
{
list.Add((Target)item);
}
}
if (list.Count != 0)
{
collection = list.AsReadOnly();
return true;
}
collection = null;
return false;
}
private class EmptyItemCollection : ItemCollection
{
public EmptyItemCollection()
: base(DataSpace.SSpace)
{
}
}
}
}
// 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
- glyphs.cs
- TableAutomationPeer.cs
- DataGridViewColumnDesigner.cs
- AssemblyBuilder.cs
- CreatingCookieEventArgs.cs
- WindowsGraphicsCacheManager.cs
- ExecutionEngineException.cs
- SchemaNotation.cs
- CodeCompileUnit.cs
- RTTypeWrapper.cs
- ResourceDictionary.cs
- ProfileModule.cs
- BasicExpandProvider.cs
- AdornerPresentationContext.cs
- DisplayNameAttribute.cs
- TcpChannelHelper.cs
- BridgeDataRecord.cs
- ComponentEditorPage.cs
- PtsContext.cs
- HttpClientCertificate.cs
- FreezableOperations.cs
- LocatorPartList.cs
- TableCell.cs
- Label.cs
- HexParser.cs
- PolyQuadraticBezierSegment.cs
- DeclarationUpdate.cs
- InputLangChangeEvent.cs
- GradientStop.cs
- DisableDpiAwarenessAttribute.cs
- WebPartDisplayModeCancelEventArgs.cs
- FocusChangedEventArgs.cs
- DesignerRegionMouseEventArgs.cs
- webeventbuffer.cs
- DependencyObjectType.cs
- WhitespaceRuleReader.cs
- KeyValuePairs.cs
- HebrewCalendar.cs
- ISessionStateStore.cs
- TreeViewImageKeyConverter.cs
- ListViewSelectEventArgs.cs
- BrowserTree.cs
- TraceLog.cs
- ByteStreamMessageEncoderFactory.cs
- HttpHeaderCollection.cs
- HeaderedContentControl.cs
- TogglePattern.cs
- NavigationService.cs
- TreeView.cs
- SerializationFieldInfo.cs
- CursorConverter.cs
- ModelService.cs
- XmlSchemaSimpleTypeRestriction.cs
- DataFormats.cs
- BevelBitmapEffect.cs
- DayRenderEvent.cs
- Column.cs
- TypeElementCollection.cs
- PageCodeDomTreeGenerator.cs
- XmlCodeExporter.cs
- FixUpCollection.cs
- safemediahandle.cs
- FormClosedEvent.cs
- CommandValueSerializer.cs
- XmlTypeMapping.cs
- ScriptBehaviorDescriptor.cs
- Point3DCollection.cs
- ContentControl.cs
- JsonFormatMapping.cs
- AssociationEndMember.cs
- TypeExtension.cs
- DesignerVerb.cs
- Stylesheet.cs
- ResourceExpressionEditorSheet.cs
- DataGridViewRowPrePaintEventArgs.cs
- DataSourceView.cs
- SemanticTag.cs
- SQLInt64.cs
- CodeNamespaceImport.cs
- DocComment.cs
- NonVisualControlAttribute.cs
- securestring.cs
- PathSegmentCollection.cs
- QuotedPrintableStream.cs
- Parameter.cs
- EndPoint.cs
- XmlLoader.cs
- IntSecurity.cs
- OdbcDataReader.cs
- ExternalFile.cs
- XhtmlConformanceSection.cs
- SizeConverter.cs
- StructuralComparisons.cs
- ConsoleEntryPoint.cs
- HtmlTable.cs
- CompositionTarget.cs
- ScriptingProfileServiceSection.cs
- PageParserFilter.cs
- DocumentOrderQuery.cs
- IndexedGlyphRun.cs