Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / EntityClient / EntityTransaction.cs / 1 / EntityTransaction.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.Text; using System.Data; using System.Data.Common; using System.Diagnostics; namespace System.Data.EntityClient { using Metadata.Edm; ////// Class representing a transaction for the conceptual layer /// public sealed class EntityTransaction : DbTransaction { private EntityConnection _connection; private DbTransaction _storeTransaction; ////// Constructs the EntityTransaction object with an associated connection and the underlying store transaction /// /// The EntityConnetion object owning this transaction /// The underlying transaction object internal EntityTransaction(EntityConnection connection, DbTransaction storeTransaction) : base() { Debug.Assert(connection != null && storeTransaction != null); this._connection = connection; this._storeTransaction = storeTransaction; } ////// The connection object owning this transaction object /// public new EntityConnection Connection { get { // follow the store transaction behavior return ((null != _storeTransaction.Connection) ? _connection : null); } } ////// The connection object owning this transaction object /// protected override DbConnection DbConnection { get { // follow the store transaction behavior return ((null != _storeTransaction.Connection) ? _connection : null); } } ////// The isolation level of this transaction /// public override IsolationLevel IsolationLevel { get { return this._storeTransaction.IsolationLevel; } } ////// Gets the DbTransaction for the underlying provider transaction /// internal DbTransaction StoreTransaction { get { return this._storeTransaction; } } ////// Commits the transaction /// public override void Commit() { try { this._storeTransaction.Commit(); } catch (Exception e) { if (EntityUtil.IsCatchableExceptionType(e)) { throw EntityUtil.Provider(@"Commit", e); } throw; } this.ClearCurrentTransaction(); } ////// Rolls back the transaction /// public override void Rollback() { try { this._storeTransaction.Rollback(); } catch (Exception e) { if (EntityUtil.IsCatchableExceptionType(e)) { throw EntityUtil.Provider(@"Rollback", e); } throw; } this.ClearCurrentTransaction(); } ////// Cleans up this transaction object /// /// true to release both managed and unmanaged resources; false to release only unmanaged resources protected override void Dispose(bool disposing) { if (disposing) { this.ClearCurrentTransaction(); this._storeTransaction.Dispose(); } base.Dispose(disposing); } ////// Helper method to wrap EntityConnection.ClearCurrentTransaction() /// private void ClearCurrentTransaction() { if (_connection.CurrentTransaction == this) { _connection.ClearCurrentTransaction(); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- using System.Collections.Generic; using System.Text; using System.Data; using System.Data.Common; using System.Diagnostics; namespace System.Data.EntityClient { using Metadata.Edm; ////// Class representing a transaction for the conceptual layer /// public sealed class EntityTransaction : DbTransaction { private EntityConnection _connection; private DbTransaction _storeTransaction; ////// Constructs the EntityTransaction object with an associated connection and the underlying store transaction /// /// The EntityConnetion object owning this transaction /// The underlying transaction object internal EntityTransaction(EntityConnection connection, DbTransaction storeTransaction) : base() { Debug.Assert(connection != null && storeTransaction != null); this._connection = connection; this._storeTransaction = storeTransaction; } ////// The connection object owning this transaction object /// public new EntityConnection Connection { get { // follow the store transaction behavior return ((null != _storeTransaction.Connection) ? _connection : null); } } ////// The connection object owning this transaction object /// protected override DbConnection DbConnection { get { // follow the store transaction behavior return ((null != _storeTransaction.Connection) ? _connection : null); } } ////// The isolation level of this transaction /// public override IsolationLevel IsolationLevel { get { return this._storeTransaction.IsolationLevel; } } ////// Gets the DbTransaction for the underlying provider transaction /// internal DbTransaction StoreTransaction { get { return this._storeTransaction; } } ////// Commits the transaction /// public override void Commit() { try { this._storeTransaction.Commit(); } catch (Exception e) { if (EntityUtil.IsCatchableExceptionType(e)) { throw EntityUtil.Provider(@"Commit", e); } throw; } this.ClearCurrentTransaction(); } ////// Rolls back the transaction /// public override void Rollback() { try { this._storeTransaction.Rollback(); } catch (Exception e) { if (EntityUtil.IsCatchableExceptionType(e)) { throw EntityUtil.Provider(@"Rollback", e); } throw; } this.ClearCurrentTransaction(); } ////// Cleans up this transaction object /// /// true to release both managed and unmanaged resources; false to release only unmanaged resources protected override void Dispose(bool disposing) { if (disposing) { this.ClearCurrentTransaction(); this._storeTransaction.Dispose(); } base.Dispose(disposing); } ////// Helper method to wrap EntityConnection.ClearCurrentTransaction() /// private void ClearCurrentTransaction() { if (_connection.CurrentTransaction == this) { _connection.ClearCurrentTransaction(); } } } } // 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
- PenThreadWorker.cs
- ParentControlDesigner.cs
- AssemblyInfo.cs
- CssClassPropertyAttribute.cs
- DataObject.cs
- TypeBuilder.cs
- Helpers.cs
- SizeValueSerializer.cs
- TemplateXamlParser.cs
- WebBrowserHelper.cs
- ContainsRowNumberChecker.cs
- FontFamilyConverter.cs
- SrgsGrammarCompiler.cs
- UIElement3D.cs
- TCPListener.cs
- CryptoProvider.cs
- EventKeyword.cs
- TypeHelpers.cs
- AmbiguousMatchException.cs
- SchemaObjectWriter.cs
- EncodingDataItem.cs
- RunInstallerAttribute.cs
- ParentUndoUnit.cs
- SqlBulkCopyColumnMappingCollection.cs
- InputMethodStateTypeInfo.cs
- UnaryNode.cs
- Vector3DCollectionConverter.cs
- SecureStringHasher.cs
- ToolboxItemCollection.cs
- DataGridState.cs
- UInt32Converter.cs
- Style.cs
- parserscommon.cs
- EventOpcode.cs
- TextLine.cs
- _NTAuthentication.cs
- NetCodeGroup.cs
- LabelLiteral.cs
- CharConverter.cs
- Pen.cs
- JsonEncodingStreamWrapper.cs
- BCryptSafeHandles.cs
- RegexMatchCollection.cs
- TraceData.cs
- InkCanvasAutomationPeer.cs
- ControlEvent.cs
- ReliableMessagingHelpers.cs
- PasswordDeriveBytes.cs
- StrictModeSecurityHeaderElementInferenceEngine.cs
- XPathCompileException.cs
- CheckableControlBaseAdapter.cs
- ThemeableAttribute.cs
- MsmqInputChannelBase.cs
- codemethodreferenceexpression.cs
- UserValidatedEventArgs.cs
- ObjectCache.cs
- DataObject.cs
- Buffer.cs
- _BufferOffsetSize.cs
- QilCloneVisitor.cs
- ResourceReader.cs
- OptionalColumn.cs
- EventDescriptor.cs
- DefaultSerializationProviderAttribute.cs
- DocumentOrderQuery.cs
- ServiceReference.cs
- XmlHierarchyData.cs
- DbgUtil.cs
- SafeNativeMethods.cs
- FilterEventArgs.cs
- StringUtil.cs
- VoiceObjectToken.cs
- RemoteWebConfigurationHost.cs
- ToggleButtonAutomationPeer.cs
- SchemaImporterExtensionsSection.cs
- BindingExpression.cs
- mediaclock.cs
- EventLogPermission.cs
- DisplayMemberTemplateSelector.cs
- ElementHostPropertyMap.cs
- CodeFieldReferenceExpression.cs
- FormatException.cs
- SegmentInfo.cs
- StringBlob.cs
- ExpressionBuilder.cs
- CollectionsUtil.cs
- QilGenerator.cs
- XPathNavigator.cs
- SerializationObjectManager.cs
- ReferencedType.cs
- LongTypeConverter.cs
- DurableInstanceProvider.cs
- ValidationError.cs
- FastEncoder.cs
- MultiSelectRootGridEntry.cs
- StylusPlugInCollection.cs
- AutomationTextAttribute.cs
- ReadOnlyDataSourceView.cs
- GridViewEditEventArgs.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs