Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / EntityClient / EntityTransaction.cs / 1305376 / EntityTransaction.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
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
- FolderLevelBuildProviderAppliesToAttribute.cs
- XmlSchemaChoice.cs
- TemplateKey.cs
- PrivateFontCollection.cs
- AsyncCompletedEventArgs.cs
- CatalogZoneDesigner.cs
- FileSystemInfo.cs
- Operators.cs
- FocusChangedEventArgs.cs
- SecurityException.cs
- ConfigXmlElement.cs
- Root.cs
- Misc.cs
- XmlSchemaIdentityConstraint.cs
- RegisteredArrayDeclaration.cs
- CollectionViewGroupRoot.cs
- NetStream.cs
- WebRequestModuleElementCollection.cs
- DataReceivedEventArgs.cs
- IApplicationTrustManager.cs
- _DomainName.cs
- OdbcConnectionHandle.cs
- Clock.cs
- SHA256.cs
- BaseConfigurationRecord.cs
- OptimalTextSource.cs
- PageVisual.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- ADRoleFactory.cs
- ScrollChrome.cs
- PolicyValidator.cs
- EnumValidator.cs
- ConfigurationStrings.cs
- LeftCellWrapper.cs
- Debug.cs
- TextInfo.cs
- SqlParameterizer.cs
- UrlMappingCollection.cs
- NotifyInputEventArgs.cs
- smtpconnection.cs
- HwndSourceKeyboardInputSite.cs
- SamlSubject.cs
- PagedDataSource.cs
- PingReply.cs
- XPathNavigatorKeyComparer.cs
- DataColumnPropertyDescriptor.cs
- Sql8ExpressionRewriter.cs
- Grant.cs
- SourceElementsCollection.cs
- CompModHelpers.cs
- EditableTreeList.cs
- DataGridViewSelectedCellCollection.cs
- XmlChildEnumerator.cs
- WebPartCollection.cs
- Int32AnimationUsingKeyFrames.cs
- ClientScriptManager.cs
- SecureStringHasher.cs
- CompositeTypefaceMetrics.cs
- CommandField.cs
- DataQuery.cs
- SerializationFieldInfo.cs
- EdmError.cs
- TreeViewHitTestInfo.cs
- BindingSourceDesigner.cs
- StreamWriter.cs
- ResourceProviderFactory.cs
- CatalogPart.cs
- TreeNodeStyle.cs
- Decimal.cs
- DataRowView.cs
- VideoDrawing.cs
- TextProperties.cs
- sortedlist.cs
- SchemaType.cs
- Imaging.cs
- CaseInsensitiveOrdinalStringComparer.cs
- XmlDataSourceView.cs
- Rijndael.cs
- DummyDataSource.cs
- GridViewAutomationPeer.cs
- EnlistmentTraceIdentifier.cs
- ServiceContractGenerator.cs
- AsyncContentLoadedEventArgs.cs
- WebScriptMetadataInstanceContextProvider.cs
- CodeCatchClause.cs
- ResourceContainer.cs
- Point3DAnimationUsingKeyFrames.cs
- SqlVisitor.cs
- DataServiceBehavior.cs
- ConfigXmlReader.cs
- EmptyControlCollection.cs
- AnnotationResourceCollection.cs
- DetailsViewInsertedEventArgs.cs
- FixUp.cs
- FlowDocument.cs
- SslStream.cs
- XamlGridLengthSerializer.cs
- ActivityCollectionMarkupSerializer.cs
- SiteMapProvider.cs
- ButtonFlatAdapter.cs