Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / EntityClient / EntityAdapter.cs / 1305376 / EntityAdapter.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.Data.Mapping.Update.Internal; using System.Data.Objects; using System.Diagnostics; using System.Data.Mapping; namespace System.Data.EntityClient { ////// Class representing a data adapter for the conceptual layer /// internal sealed class EntityAdapter : IEntityAdapter { private bool _acceptChangesDuringUpdate = true; private EntityConnection _connection; private Int32? _commandTimeout; ////// Constructs the EntityAdapter object without a connection object /// public EntityAdapter() { } ////// Gets or sets the map connection used by this adapter. /// DbConnection IEntityAdapter.Connection { get { return this.Connection; } set { this.Connection = (EntityConnection)value; } } ////// Gets or sets the map connection used by this adapter. /// public EntityConnection Connection { get { return _connection; } set { _connection = value; } } ////// Gets or sets whether the IEntityCache.AcceptChanges should be called during a call to IEntityAdapter.Update. /// public bool AcceptChangesDuringUpdate { get { return this._acceptChangesDuringUpdate; } set { this._acceptChangesDuringUpdate = value; } } ////// Gets of sets the command timeout for update operations. If null, indicates that the default timeout /// for the provider should be used. /// Int32? IEntityAdapter.CommandTimeout { get { return this._commandTimeout; } set { this._commandTimeout = value; } } ////// Persist modifications described in the given cache. /// /// Entity cache containing changes to persist to the store. ///Number of cache entries affected by the udpate. public Int32 Update(IEntityStateManager entityCache) { EntityUtil.CheckArgumentNull(entityCache, "entityCache"); if (!IsStateManagerDirty(entityCache)) { return 0; } // Check that we have a connection before we proceed if (_connection == null) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_NoConnectionForAdapter); } // Check that the store connection is available if (_connection.StoreProviderFactory == null || this._connection.StoreConnection == null) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_NoStoreConnectionForUpdate); } // Check that the connection is open before we proceed if (ConnectionState.Open != _connection.State) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_ClosedConnectionForUpdate); } return UpdateTranslator.Update(entityCache, this); } ////// Determine whether the cache has changes to apply. /// /// ObjectStateManager to check. Must not be null. ///true if cache contains changes entries; false otherwise private static bool IsStateManagerDirty(IEntityStateManager entityCache) { Debug.Assert(null != entityCache); bool hasChanges = false; // this call to GetCacheEntries is constant time (the ObjectStateManager implementation // maintains an explicit list of entries in each state) foreach (ObjectStateEntry entry in entityCache.GetEntityStateEntries( EntityState.Added | EntityState.Deleted | EntityState.Modified)) { hasChanges = true; break; } return hasChanges; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- //// 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.Data.Mapping.Update.Internal; using System.Data.Objects; using System.Diagnostics; using System.Data.Mapping; namespace System.Data.EntityClient { ////// Class representing a data adapter for the conceptual layer /// internal sealed class EntityAdapter : IEntityAdapter { private bool _acceptChangesDuringUpdate = true; private EntityConnection _connection; private Int32? _commandTimeout; ////// Constructs the EntityAdapter object without a connection object /// public EntityAdapter() { } ////// Gets or sets the map connection used by this adapter. /// DbConnection IEntityAdapter.Connection { get { return this.Connection; } set { this.Connection = (EntityConnection)value; } } ////// Gets or sets the map connection used by this adapter. /// public EntityConnection Connection { get { return _connection; } set { _connection = value; } } ////// Gets or sets whether the IEntityCache.AcceptChanges should be called during a call to IEntityAdapter.Update. /// public bool AcceptChangesDuringUpdate { get { return this._acceptChangesDuringUpdate; } set { this._acceptChangesDuringUpdate = value; } } ////// Gets of sets the command timeout for update operations. If null, indicates that the default timeout /// for the provider should be used. /// Int32? IEntityAdapter.CommandTimeout { get { return this._commandTimeout; } set { this._commandTimeout = value; } } ////// Persist modifications described in the given cache. /// /// Entity cache containing changes to persist to the store. ///Number of cache entries affected by the udpate. public Int32 Update(IEntityStateManager entityCache) { EntityUtil.CheckArgumentNull(entityCache, "entityCache"); if (!IsStateManagerDirty(entityCache)) { return 0; } // Check that we have a connection before we proceed if (_connection == null) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_NoConnectionForAdapter); } // Check that the store connection is available if (_connection.StoreProviderFactory == null || this._connection.StoreConnection == null) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_NoStoreConnectionForUpdate); } // Check that the connection is open before we proceed if (ConnectionState.Open != _connection.State) { throw EntityUtil.InvalidOperation(System.Data.Entity.Strings.EntityClient_ClosedConnectionForUpdate); } return UpdateTranslator.Update(entityCache, this); } ////// Determine whether the cache has changes to apply. /// /// ObjectStateManager to check. Must not be null. ///true if cache contains changes entries; false otherwise private static bool IsStateManagerDirty(IEntityStateManager entityCache) { Debug.Assert(null != entityCache); bool hasChanges = false; // this call to GetCacheEntries is constant time (the ObjectStateManager implementation // maintains an explicit list of entries in each state) foreach (ObjectStateEntry entry in entityCache.GetEntityStateEntries( EntityState.Added | EntityState.Deleted | EntityState.Modified)) { hasChanges = true; break; } return hasChanges; } } } // 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
- FormClosedEvent.cs
- SmiSettersStream.cs
- IDReferencePropertyAttribute.cs
- ProgressBarAutomationPeer.cs
- XmlSortKey.cs
- Misc.cs
- BitmapEffectCollection.cs
- StylusPlugInCollection.cs
- EventProperty.cs
- OperatorExpressions.cs
- XamlTreeBuilderBamlRecordWriter.cs
- PaperSize.cs
- _TimerThread.cs
- UInt32Storage.cs
- WriteableBitmap.cs
- SoapSchemaExporter.cs
- AutomationPatternInfo.cs
- TransformGroup.cs
- ImageListStreamer.cs
- JoinCqlBlock.cs
- CompressEmulationStream.cs
- MeasureData.cs
- ServiceDescriptions.cs
- DataGridViewCellMouseEventArgs.cs
- GestureRecognitionResult.cs
- AutomationEvent.cs
- XmlDataCollection.cs
- Icon.cs
- ProcessDesigner.cs
- Pair.cs
- XappLauncher.cs
- XmlSchemaAttribute.cs
- VerticalAlignConverter.cs
- RegexInterpreter.cs
- TickBar.cs
- EdmComplexPropertyAttribute.cs
- TTSVoice.cs
- AnnotationHelper.cs
- TextAdaptor.cs
- CodeAttributeDeclaration.cs
- StylusCaptureWithinProperty.cs
- RuleValidation.cs
- _IPv4Address.cs
- EndpointInfo.cs
- BinaryParser.cs
- AdRotator.cs
- PermissionRequestEvidence.cs
- RawStylusInputCustomData.cs
- DictionaryBase.cs
- AssociationTypeEmitter.cs
- BuilderElements.cs
- DiagnosticTrace.cs
- TraceHandler.cs
- ErrorCodes.cs
- HelpKeywordAttribute.cs
- XmlElementAttributes.cs
- GeometryCollection.cs
- Message.cs
- DropShadowBitmapEffect.cs
- BindMarkupExtensionSerializer.cs
- Base64Stream.cs
- CompatibleIComparer.cs
- TypeBuilderInstantiation.cs
- DPAPIProtectedConfigurationProvider.cs
- QilExpression.cs
- DaylightTime.cs
- CookieHandler.cs
- ReadWriteSpinLock.cs
- PublishLicense.cs
- ApplicationId.cs
- CompositeDesignerAccessibleObject.cs
- DbParameterHelper.cs
- CompatibleIComparer.cs
- Empty.cs
- SettingsAttributes.cs
- ScheduleChanges.cs
- BaseCodePageEncoding.cs
- HtmlTextBoxAdapter.cs
- ArglessEventHandlerProxy.cs
- EditModeSwitchButton.cs
- BaseProcessor.cs
- followingsibling.cs
- WeakReferenceEnumerator.cs
- SetStoryboardSpeedRatio.cs
- DirectoryInfo.cs
- ClientTarget.cs
- DesignerVerbCollection.cs
- WebRequestModulesSection.cs
- TransformedBitmap.cs
- ExpressionList.cs
- ObjectSet.cs
- DriveInfo.cs
- ListSourceHelper.cs
- XmlNamedNodeMap.cs
- DrawingGroup.cs
- XmlSchemaGroup.cs
- Vector3D.cs
- EntityDataSourceSelectedEventArgs.cs
- LicenseException.cs
- UnsafeNativeMethods.cs