Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / Microsoft / SqlServer / Server / sqlcontext.cs / 1 / sqlcontext.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //daltodov //----------------------------------------------------------------------------- namespace Microsoft.SqlServer.Server { using System; using System.Data.Common; using System.Data.SqlClient; using System.Data.SqlTypes; using System.Diagnostics; using System.Security.Principal; #if WINFSInternalOnly internal #else public #endif sealed class SqlContext { // There are no publicly visible instance methods/properties on SqlContext. // With the current design, the user should never get an actual instance of // this class. Instances are only used internally to hold owned objects // such as SqlPipe and SqlTriggerContext. private SmiContext _smiContext; private SqlPipe _pipe; private SqlTriggerContext _triggerContext; private SqlContext( SmiContext smiContext ) { _smiContext = smiContext; _smiContext.OutOfScope += new EventHandler(OnOutOfScope); } // // Public API // public static bool IsAvailable { get { bool result = InOutOfProcHelper.InProc; return result; } } // Get the SqlPipe (if any) for the current scope. public static SqlPipe Pipe { get { return CurrentContext.InstancePipe; } } // Get the SqlTriggerContext (if any) for the current scope. public static SqlTriggerContext TriggerContext { get { return CurrentContext.InstanceTriggerContext; } } public static WindowsIdentity WindowsIdentity{ get { return CurrentContext.InstanceWindowsIdentity; } } // // Internal class methods // // CurrentContext should be the *only* way to get to an instance of SqlContext. private static SqlContext CurrentContext { get { SmiContext smiContext = SmiContextFactory.Instance.GetCurrentContext(); SqlContext result = (SqlContext)smiContext.GetContextValue( (int)SmiContextFactory.ContextKey.SqlContext ); if ( null == result ) { result = new SqlContext( smiContext ); smiContext.SetContextValue( (int)SmiContextFactory.ContextKey.SqlContext, result ); } return result; } } // // Internal instance methods // private SqlPipe InstancePipe { get { if ( null == _pipe && _smiContext.HasContextPipe ) { _pipe = new SqlPipe( _smiContext ); } Debug.Assert( null == _pipe || _smiContext.HasContextPipe, "Caching logic error for contained pipe!" ); return _pipe; } } private SqlTriggerContext InstanceTriggerContext { get { if ( null == _triggerContext ) { bool[] columnsUpdated; TriggerAction triggerAction; SqlXml eventInstanceData; SmiEventSink_Default eventSink = new SmiEventSink_Default(); _smiContext.GetTriggerInfo(eventSink, out columnsUpdated, out triggerAction, out eventInstanceData); eventSink.ProcessMessagesAndThrow(); if (TriggerAction.Invalid != triggerAction) { _triggerContext = new SqlTriggerContext( triggerAction, columnsUpdated, eventInstanceData ); } } return _triggerContext; } } private WindowsIdentity InstanceWindowsIdentity { get { return _smiContext.WindowsIdentity; } } // Called whenever the context goes out of scope, we need to make // sure that we release internal state, such as the pipe's record buffer private void OnOutOfScope( object s, EventArgs e ) { if (Bid.AdvancedOn) { Bid.Trace( "SqlContext is out of scope\n" ); } if ( null != _pipe ) { _pipe.OnOutOfScope(); } _triggerContext = null; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //daltodov //----------------------------------------------------------------------------- namespace Microsoft.SqlServer.Server { using System; using System.Data.Common; using System.Data.SqlClient; using System.Data.SqlTypes; using System.Diagnostics; using System.Security.Principal; #if WINFSInternalOnly internal #else public #endif sealed class SqlContext { // There are no publicly visible instance methods/properties on SqlContext. // With the current design, the user should never get an actual instance of // this class. Instances are only used internally to hold owned objects // such as SqlPipe and SqlTriggerContext. private SmiContext _smiContext; private SqlPipe _pipe; private SqlTriggerContext _triggerContext; private SqlContext( SmiContext smiContext ) { _smiContext = smiContext; _smiContext.OutOfScope += new EventHandler(OnOutOfScope); } // // Public API // public static bool IsAvailable { get { bool result = InOutOfProcHelper.InProc; return result; } } // Get the SqlPipe (if any) for the current scope. public static SqlPipe Pipe { get { return CurrentContext.InstancePipe; } } // Get the SqlTriggerContext (if any) for the current scope. public static SqlTriggerContext TriggerContext { get { return CurrentContext.InstanceTriggerContext; } } public static WindowsIdentity WindowsIdentity{ get { return CurrentContext.InstanceWindowsIdentity; } } // // Internal class methods // // CurrentContext should be the *only* way to get to an instance of SqlContext. private static SqlContext CurrentContext { get { SmiContext smiContext = SmiContextFactory.Instance.GetCurrentContext(); SqlContext result = (SqlContext)smiContext.GetContextValue( (int)SmiContextFactory.ContextKey.SqlContext ); if ( null == result ) { result = new SqlContext( smiContext ); smiContext.SetContextValue( (int)SmiContextFactory.ContextKey.SqlContext, result ); } return result; } } // // Internal instance methods // private SqlPipe InstancePipe { get { if ( null == _pipe && _smiContext.HasContextPipe ) { _pipe = new SqlPipe( _smiContext ); } Debug.Assert( null == _pipe || _smiContext.HasContextPipe, "Caching logic error for contained pipe!" ); return _pipe; } } private SqlTriggerContext InstanceTriggerContext { get { if ( null == _triggerContext ) { bool[] columnsUpdated; TriggerAction triggerAction; SqlXml eventInstanceData; SmiEventSink_Default eventSink = new SmiEventSink_Default(); _smiContext.GetTriggerInfo(eventSink, out columnsUpdated, out triggerAction, out eventInstanceData); eventSink.ProcessMessagesAndThrow(); if (TriggerAction.Invalid != triggerAction) { _triggerContext = new SqlTriggerContext( triggerAction, columnsUpdated, eventInstanceData ); } } return _triggerContext; } } private WindowsIdentity InstanceWindowsIdentity { get { return _smiContext.WindowsIdentity; } } // Called whenever the context goes out of scope, we need to make // sure that we release internal state, such as the pipe's record buffer private void OnOutOfScope( object s, EventArgs e ) { if (Bid.AdvancedOn) { Bid.Trace( "SqlContext is out of scope\n" ); } if ( null != _pipe ) { _pipe.OnOutOfScope(); } _triggerContext = null; } } } // 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
- Base64Encoder.cs
- ConnectionStringsSection.cs
- FactoryRecord.cs
- TextWriterTraceListener.cs
- DrawToolTipEventArgs.cs
- ProxyHelper.cs
- SqlGenerator.cs
- MetadataArtifactLoaderFile.cs
- Rotation3DAnimationBase.cs
- CodeStatement.cs
- QuaternionRotation3D.cs
- SqlTriggerContext.cs
- RegionInfo.cs
- ToggleButtonAutomationPeer.cs
- CheckBoxBaseAdapter.cs
- TimeoutValidationAttribute.cs
- CommonObjectSecurity.cs
- StandardOleMarshalObject.cs
- GraphicsContext.cs
- SecurityRequiresReviewAttribute.cs
- _CommandStream.cs
- SQLDouble.cs
- CompilerGlobalScopeAttribute.cs
- PriorityQueue.cs
- EntityContainer.cs
- GridViewSelectEventArgs.cs
- XmlNodeChangedEventManager.cs
- ContextDataSourceView.cs
- BaseProcessor.cs
- Triplet.cs
- IISMapPath.cs
- UnsafeNativeMethods.cs
- ProtocolElement.cs
- InkCanvasAutomationPeer.cs
- RecordsAffectedEventArgs.cs
- SafeWaitHandle.cs
- SkewTransform.cs
- Range.cs
- MetafileHeaderEmf.cs
- RsaSecurityTokenAuthenticator.cs
- ProfileManager.cs
- StateMachine.cs
- UnsafeNetInfoNativeMethods.cs
- XamlSerializationHelper.cs
- TableRowGroup.cs
- NativeMethods.cs
- ScrollEventArgs.cs
- XmlTypeMapping.cs
- PerformanceCounter.cs
- ClientTarget.cs
- Matrix.cs
- ApplyHostConfigurationBehavior.cs
- BooleanExpr.cs
- coordinatorscratchpad.cs
- webbrowsersite.cs
- ClientCultureInfo.cs
- ReachDocumentReferenceSerializerAsync.cs
- EventProvider.cs
- HttpApplication.cs
- TextParaClient.cs
- SamlEvidence.cs
- XmlAttributeProperties.cs
- Substitution.cs
- AutomationElementCollection.cs
- Rules.cs
- ScrollContentPresenter.cs
- ClientSettingsStore.cs
- LinqDataSourceContextEventArgs.cs
- WebServiceEnumData.cs
- HtmlInputSubmit.cs
- CultureNotFoundException.cs
- BindableTemplateBuilder.cs
- Table.cs
- WindowsPrincipal.cs
- AssignDesigner.xaml.cs
- SynchronizationContext.cs
- WmlLinkAdapter.cs
- ProfileSettings.cs
- COM2PropertyBuilderUITypeEditor.cs
- SourceFileBuildProvider.cs
- CellCreator.cs
- OptionUsage.cs
- ServiceSettingsResponseInfo.cs
- FileUpload.cs
- FaultContext.cs
- diagnosticsswitches.cs
- RtfControlWordInfo.cs
- contentDescriptor.cs
- Evidence.cs
- MappedMetaModel.cs
- DataGridBoundColumn.cs
- RemotingServices.cs
- ProcessInfo.cs
- EncodingInfo.cs
- DbSourceParameterCollection.cs
- ConnectivityStatus.cs
- StoreAnnotationsMap.cs
- DataContractSerializerSection.cs
- CursorInteropHelper.cs
- AuthorizationRuleCollection.cs