Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntityDesign / Design / System / Data / Entity / Design / SSDLGenerator / FunctionDetailsReader.cs / 1 / FunctionDetailsReader.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; using System.Data.Common; using System.Data.EntityClient; using System.Diagnostics; using System.Data.Metadata.Edm; namespace System.Data.Entity.Design.SsdlGenerator { // the purpose of this class is to give us strongly typed access to // the results of the reader // // NOTE this class will dispose of the command when the reader is disposed // internal class FunctionDetailsReader : IDisposable { private DbDataReader _reader; private EntityCommand _command; private EntityConnection _connection; private object[] _currentRow; internal FunctionDetailsReader(FunctionDetailsReader.Memento memento) { _currentRow = memento.Values; } internal FunctionDetailsReader(EntityConnection connection, IEnumerablefilters) { Debug.Assert(connection != null, "the parameter connection is null"); Debug.Assert(connection.State == ConnectionState.Open, "the connection is not Open"); _connection = connection; _command = EntityStoreSchemaGeneratorDatabaseSchemaLoader.CreateFilteredCommand( _connection, FunctionDetailSql, FunctionOrderByClause, EntityStoreSchemaFilterObjectTypes.Function, new List (filters), new string [] {FunctionDetailAlias}); _reader = _command.ExecuteReader(CommandBehavior.SequentialAccess); } internal bool Read() { Debug.Assert(_reader != null, "don't Read() when it is created from a memento"); bool haveRow = _reader.Read(); if (haveRow) { if(_currentRow == null) { _currentRow = new object[COLUMN_COUNT]; } _reader.GetValues(_currentRow); } else { _currentRow = null; } return haveRow; } public void Dispose() { Debug.Assert(_reader != null, "don't Dispose() when it is created from a memento"); _reader.Dispose(); _command.Dispose(); } internal void Attach(Memento memento) { Debug.Assert(memento != null, "the parameter memento is null"); Debug.Assert(memento.Values != null, "the values in the memento are null"); Debug.Assert(_reader == null, "don't attach to a real reader"); _currentRow = memento.Values; } const int PROC_SCHEMA_INDEX = 0; const int PROC_NAME_INDEX = 1; const int PROC_RET_TYPE_INDEX = 2; const int PROC_ISAGGREGATE_INDEX = 3; const int PROC_ISCOMPOSABLE_INDEX = 4; const int PROC_ISBUILTIN_INDEX = 5; const int PROC_ISNILADIC_INDEX = 6; const int PARAM_NAME_INDEX = 7; const int PARAM_TYPE_INDEX = 8; const int PARAM_DIRECTION_INDEX = 9; const int COLUMN_COUNT = 10; internal bool IsSchemaNull { get { return Convert.IsDBNull(_currentRow[PROC_SCHEMA_INDEX]); } } internal string Schema { get { return (string)_currentRow[PROC_SCHEMA_INDEX]; } } internal string ProcedureName { get { return (string)_currentRow[PROC_NAME_INDEX]; } } internal string ReturnType { get { return (string)_currentRow[PROC_RET_TYPE_INDEX]; } } internal bool IsReturnTypeNull { get {return Convert.IsDBNull(_currentRow[PROC_RET_TYPE_INDEX]);} } internal bool IsIsAggregate { get { if(Convert.IsDBNull(_currentRow[PROC_ISAGGREGATE_INDEX])) return false; return (bool)_currentRow[PROC_ISAGGREGATE_INDEX]; } } internal bool IsBuiltIn { get { if (Convert.IsDBNull(_currentRow[PROC_ISBUILTIN_INDEX])) return false; return (bool)_currentRow[PROC_ISBUILTIN_INDEX]; } } internal bool IsComposable { get { if(Convert.IsDBNull(_currentRow[PROC_ISCOMPOSABLE_INDEX])) return false; return (bool)_currentRow[PROC_ISCOMPOSABLE_INDEX]; } } internal bool IsNiladic { get { if(Convert.IsDBNull(_currentRow[PROC_ISNILADIC_INDEX])) return false; return (bool)_currentRow[PROC_ISNILADIC_INDEX]; } } internal string ParameterName { get { return (string)_currentRow[PARAM_NAME_INDEX]; } } internal bool IsParameterNameNull { get {return Convert.IsDBNull(_currentRow[PARAM_TYPE_INDEX]);} } internal string ParameterType { get { return (string)_currentRow[PARAM_TYPE_INDEX]; } } internal bool IsParameterTypeNull { get {return Convert.IsDBNull(_currentRow[PARAM_TYPE_INDEX]);} } internal string ProcParameterMode { get { return (string)_currentRow[PARAM_DIRECTION_INDEX]; } } internal bool IsParameterModeNull { get { return Convert.IsDBNull(_currentRow[PARAM_DIRECTION_INDEX]); } } internal bool TryGetParameterMode(out ParameterMode mode) { if (IsParameterModeNull) { mode = (ParameterMode)(-1); return false; } switch(ProcParameterMode) { case "IN": mode = ParameterMode.In; return true; case "OUT": mode = ParameterMode.Out; return true; case "INOUT": mode = ParameterMode.InOut; return true; default: mode = (ParameterMode)(-1); return false; } } internal EntityStoreSchemaGenerator.DbObjectKey CreateDbObjectKey() { Debug.Assert(_currentRow != null, "don't call this method when you not reading"); return new EntityStoreSchemaGenerator.DbObjectKey(null, _currentRow[PROC_SCHEMA_INDEX], _currentRow[PROC_NAME_INDEX], EntityStoreSchemaGenerator.DbObjectType.Function); } internal Memento CreateMemento() { Debug.Assert(_currentRow != null, "don't call this method when you not reading"); return new Memento((object[])_currentRow.Clone()); } private static readonly string FunctionDetailAlias = "sp"; private static readonly string FunctionDetailSql = @" SELECT sp.SchemaName , sp.Name , sp.ReturnTypeName , sp.IsAggregate , sp.IsComposable , sp.IsBuiltIn , sp.IsNiladic , sp.ParameterName , sp.ParameterType , sp.Mode FROM ( (SELECT r.CatalogName as CatalogName , r.SchemaName as SchemaName , r.Name as Name , r.ReturnType.TypeName as ReturnTypeName , r.IsAggregate as IsAggregate , true as IsComposable , r.IsBuiltIn as IsBuiltIn , r.IsNiladic as IsNiladic , p.Name as ParameterName , p.ParameterType.TypeName as ParameterType , p.Mode as Mode , p.Ordinal as Ordinal FROM OfType(SchemaInformation.Functions, Store.ScalarFunction) as r OUTER APPLY r.Parameters as p) UNION ALL (SELECT r.CatalogName as CatalogName , r.SchemaName as SchemaName , r.Name as Name , CAST(NULL as string) as ReturnTypeName , false as IsAggregate , false as IsComposable , false as IsBuiltIn , false as IsNiladic , p.Name as ParameterName , p.ParameterType.TypeName as ParameterType , p.Mode as Mode , p.Ordinal as Ordinal FROM SchemaInformation.Procedures as r OUTER APPLY r.Parameters as p)) as sp "; private static readonly string FunctionOrderByClause = @" ORDER BY sp.SchemaName , sp.Name , sp.Ordinal "; internal class Memento { private object[] _values; internal Memento(object[] values) { _values = values; } internal object[] Values { get { return _values; } } internal FunctionDetailsReader CreateReader() { return new FunctionDetailsReader(this); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; using System.Data.Common; using System.Data.EntityClient; using System.Diagnostics; using System.Data.Metadata.Edm; namespace System.Data.Entity.Design.SsdlGenerator { // the purpose of this class is to give us strongly typed access to // the results of the reader // // NOTE this class will dispose of the command when the reader is disposed // internal class FunctionDetailsReader : IDisposable { private DbDataReader _reader; private EntityCommand _command; private EntityConnection _connection; private object[] _currentRow; internal FunctionDetailsReader(FunctionDetailsReader.Memento memento) { _currentRow = memento.Values; } internal FunctionDetailsReader(EntityConnection connection, IEnumerablefilters) { Debug.Assert(connection != null, "the parameter connection is null"); Debug.Assert(connection.State == ConnectionState.Open, "the connection is not Open"); _connection = connection; _command = EntityStoreSchemaGeneratorDatabaseSchemaLoader.CreateFilteredCommand( _connection, FunctionDetailSql, FunctionOrderByClause, EntityStoreSchemaFilterObjectTypes.Function, new List (filters), new string [] {FunctionDetailAlias}); _reader = _command.ExecuteReader(CommandBehavior.SequentialAccess); } internal bool Read() { Debug.Assert(_reader != null, "don't Read() when it is created from a memento"); bool haveRow = _reader.Read(); if (haveRow) { if(_currentRow == null) { _currentRow = new object[COLUMN_COUNT]; } _reader.GetValues(_currentRow); } else { _currentRow = null; } return haveRow; } public void Dispose() { Debug.Assert(_reader != null, "don't Dispose() when it is created from a memento"); _reader.Dispose(); _command.Dispose(); } internal void Attach(Memento memento) { Debug.Assert(memento != null, "the parameter memento is null"); Debug.Assert(memento.Values != null, "the values in the memento are null"); Debug.Assert(_reader == null, "don't attach to a real reader"); _currentRow = memento.Values; } const int PROC_SCHEMA_INDEX = 0; const int PROC_NAME_INDEX = 1; const int PROC_RET_TYPE_INDEX = 2; const int PROC_ISAGGREGATE_INDEX = 3; const int PROC_ISCOMPOSABLE_INDEX = 4; const int PROC_ISBUILTIN_INDEX = 5; const int PROC_ISNILADIC_INDEX = 6; const int PARAM_NAME_INDEX = 7; const int PARAM_TYPE_INDEX = 8; const int PARAM_DIRECTION_INDEX = 9; const int COLUMN_COUNT = 10; internal bool IsSchemaNull { get { return Convert.IsDBNull(_currentRow[PROC_SCHEMA_INDEX]); } } internal string Schema { get { return (string)_currentRow[PROC_SCHEMA_INDEX]; } } internal string ProcedureName { get { return (string)_currentRow[PROC_NAME_INDEX]; } } internal string ReturnType { get { return (string)_currentRow[PROC_RET_TYPE_INDEX]; } } internal bool IsReturnTypeNull { get {return Convert.IsDBNull(_currentRow[PROC_RET_TYPE_INDEX]);} } internal bool IsIsAggregate { get { if(Convert.IsDBNull(_currentRow[PROC_ISAGGREGATE_INDEX])) return false; return (bool)_currentRow[PROC_ISAGGREGATE_INDEX]; } } internal bool IsBuiltIn { get { if (Convert.IsDBNull(_currentRow[PROC_ISBUILTIN_INDEX])) return false; return (bool)_currentRow[PROC_ISBUILTIN_INDEX]; } } internal bool IsComposable { get { if(Convert.IsDBNull(_currentRow[PROC_ISCOMPOSABLE_INDEX])) return false; return (bool)_currentRow[PROC_ISCOMPOSABLE_INDEX]; } } internal bool IsNiladic { get { if(Convert.IsDBNull(_currentRow[PROC_ISNILADIC_INDEX])) return false; return (bool)_currentRow[PROC_ISNILADIC_INDEX]; } } internal string ParameterName { get { return (string)_currentRow[PARAM_NAME_INDEX]; } } internal bool IsParameterNameNull { get {return Convert.IsDBNull(_currentRow[PARAM_TYPE_INDEX]);} } internal string ParameterType { get { return (string)_currentRow[PARAM_TYPE_INDEX]; } } internal bool IsParameterTypeNull { get {return Convert.IsDBNull(_currentRow[PARAM_TYPE_INDEX]);} } internal string ProcParameterMode { get { return (string)_currentRow[PARAM_DIRECTION_INDEX]; } } internal bool IsParameterModeNull { get { return Convert.IsDBNull(_currentRow[PARAM_DIRECTION_INDEX]); } } internal bool TryGetParameterMode(out ParameterMode mode) { if (IsParameterModeNull) { mode = (ParameterMode)(-1); return false; } switch(ProcParameterMode) { case "IN": mode = ParameterMode.In; return true; case "OUT": mode = ParameterMode.Out; return true; case "INOUT": mode = ParameterMode.InOut; return true; default: mode = (ParameterMode)(-1); return false; } } internal EntityStoreSchemaGenerator.DbObjectKey CreateDbObjectKey() { Debug.Assert(_currentRow != null, "don't call this method when you not reading"); return new EntityStoreSchemaGenerator.DbObjectKey(null, _currentRow[PROC_SCHEMA_INDEX], _currentRow[PROC_NAME_INDEX], EntityStoreSchemaGenerator.DbObjectType.Function); } internal Memento CreateMemento() { Debug.Assert(_currentRow != null, "don't call this method when you not reading"); return new Memento((object[])_currentRow.Clone()); } private static readonly string FunctionDetailAlias = "sp"; private static readonly string FunctionDetailSql = @" SELECT sp.SchemaName , sp.Name , sp.ReturnTypeName , sp.IsAggregate , sp.IsComposable , sp.IsBuiltIn , sp.IsNiladic , sp.ParameterName , sp.ParameterType , sp.Mode FROM ( (SELECT r.CatalogName as CatalogName , r.SchemaName as SchemaName , r.Name as Name , r.ReturnType.TypeName as ReturnTypeName , r.IsAggregate as IsAggregate , true as IsComposable , r.IsBuiltIn as IsBuiltIn , r.IsNiladic as IsNiladic , p.Name as ParameterName , p.ParameterType.TypeName as ParameterType , p.Mode as Mode , p.Ordinal as Ordinal FROM OfType(SchemaInformation.Functions, Store.ScalarFunction) as r OUTER APPLY r.Parameters as p) UNION ALL (SELECT r.CatalogName as CatalogName , r.SchemaName as SchemaName , r.Name as Name , CAST(NULL as string) as ReturnTypeName , false as IsAggregate , false as IsComposable , false as IsBuiltIn , false as IsNiladic , p.Name as ParameterName , p.ParameterType.TypeName as ParameterType , p.Mode as Mode , p.Ordinal as Ordinal FROM SchemaInformation.Procedures as r OUTER APPLY r.Parameters as p)) as sp "; private static readonly string FunctionOrderByClause = @" ORDER BY sp.SchemaName , sp.Name , sp.Ordinal "; internal class Memento { private object[] _values; internal Memento(object[] values) { _values = values; } internal object[] Values { get { return _values; } } internal FunctionDetailsReader CreateReader() { return new FunctionDetailsReader(this); } } } } // 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
- ToolStripDropTargetManager.cs
- ChannelServices.cs
- ActivityCodeDomSerializer.cs
- TraceHandler.cs
- KoreanCalendar.cs
- ClipboardProcessor.cs
- StylusDownEventArgs.cs
- MSAANativeProvider.cs
- MD5.cs
- LinkButton.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- BasePropertyDescriptor.cs
- TypeHelpers.cs
- CodeBlockBuilder.cs
- FormsAuthenticationCredentials.cs
- DataServices.cs
- AsymmetricAlgorithm.cs
- CssStyleCollection.cs
- MultiView.cs
- XmlDataProvider.cs
- ModifierKeysConverter.cs
- SystemResourceKey.cs
- Certificate.cs
- Msec.cs
- IPCCacheManager.cs
- AutoGeneratedField.cs
- EntityViewGenerator.cs
- ToolBarPanel.cs
- TiffBitmapDecoder.cs
- codemethodreferenceexpression.cs
- EncoderNLS.cs
- ToolBar.cs
- RuntimeResourceSet.cs
- WebBrowserNavigatingEventHandler.cs
- ChannelManagerHelpers.cs
- KeysConverter.cs
- ValidationEventArgs.cs
- NameObjectCollectionBase.cs
- AssemblyBuilder.cs
- WriteableOnDemandStream.cs
- HtmlCommandAdapter.cs
- ButtonColumn.cs
- CompositeScriptReference.cs
- ResourceDisplayNameAttribute.cs
- TracedNativeMethods.cs
- EditorPart.cs
- DataGridColumn.cs
- ModelChangedEventArgsImpl.cs
- DtdParser.cs
- Processor.cs
- TableLayoutSettingsTypeConverter.cs
- InheritanceAttribute.cs
- ListViewItemSelectionChangedEvent.cs
- TransformerTypeCollection.cs
- UrlMappingsModule.cs
- AsymmetricKeyExchangeFormatter.cs
- Oid.cs
- SQLMoneyStorage.cs
- ExpressionConverter.cs
- Ipv6Element.cs
- CapabilitiesSection.cs
- ToolStripItemEventArgs.cs
- LinkConverter.cs
- ViewStateModeByIdAttribute.cs
- TrackingLocation.cs
- QuotedStringWriteStateInfo.cs
- DataTemplateSelector.cs
- DropShadowBitmapEffect.cs
- GlyphRunDrawing.cs
- XmlDataSource.cs
- WinInetCache.cs
- ObjectSecurity.cs
- CodeExporter.cs
- StylusTip.cs
- SimpleType.cs
- RawStylusSystemGestureInputReport.cs
- TokenBasedSet.cs
- EditingCoordinator.cs
- MenuItemCollection.cs
- MonthCalendar.cs
- Brush.cs
- ObjectQuery.cs
- SimpleApplicationHost.cs
- TableStyle.cs
- AssemblyResolver.cs
- SectionVisual.cs
- JavaScriptObjectDeserializer.cs
- DbProviderSpecificTypePropertyAttribute.cs
- ByteArrayHelperWithString.cs
- NameValuePair.cs
- FixedHyperLink.cs
- GeometryModel3D.cs
- TranslateTransform.cs
- ExpressionEvaluator.cs
- DecimalConstantAttribute.cs
- InkCollectionBehavior.cs
- QueryContext.cs
- GuidTagList.cs
- ActivityMarkupSerializer.cs
- VectorCollectionConverter.cs