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
- GenericXmlSecurityToken.cs
- Helpers.cs
- ToolTip.cs
- CustomAttributeBuilder.cs
- iisPickupDirectory.cs
- TaskExceptionHolder.cs
- ComponentManagerBroker.cs
- EventSetter.cs
- ToolStripScrollButton.cs
- SafeHandle.cs
- SmiTypedGetterSetter.cs
- WmpBitmapDecoder.cs
- ThrowHelper.cs
- PersistenceTypeAttribute.cs
- PointCollectionValueSerializer.cs
- EqualityComparer.cs
- ValidationSummary.cs
- SoapIgnoreAttribute.cs
- TextTreeDeleteContentUndoUnit.cs
- BooleanKeyFrameCollection.cs
- LinkDescriptor.cs
- MeasureItemEvent.cs
- TraceSection.cs
- PersonalizableAttribute.cs
- Maps.cs
- TerminateSequenceResponse.cs
- BindingMemberInfo.cs
- BitmapImage.cs
- TextRangeEditLists.cs
- GridViewItemAutomationPeer.cs
- SQLDateTimeStorage.cs
- IndentTextWriter.cs
- TypeBinaryExpression.cs
- WebResourceAttribute.cs
- WindowInteropHelper.cs
- XDeferredAxisSource.cs
- DtdParser.cs
- ObservableCollection.cs
- BindingListCollectionView.cs
- DetailsViewUpdatedEventArgs.cs
- ImageBrush.cs
- EdmSchemaAttribute.cs
- CqlQuery.cs
- WeakReferenceList.cs
- CompilationUnit.cs
- Animatable.cs
- SQLInt64.cs
- BuildProvidersCompiler.cs
- EncryptedKeyIdentifierClause.cs
- CodeRegionDirective.cs
- ClientCultureInfo.cs
- HttpStreamXmlDictionaryReader.cs
- PropertyFilterAttribute.cs
- RolePrincipal.cs
- PersonalizationStateInfo.cs
- EncoderExceptionFallback.cs
- RemotingConfigParser.cs
- StatusBarItemAutomationPeer.cs
- DataPagerField.cs
- ObjectItemLoadingSessionData.cs
- PropertyRef.cs
- BufferedReadStream.cs
- initElementDictionary.cs
- HwndProxyElementProvider.cs
- DocumentOrderQuery.cs
- EdmType.cs
- XmlnsCompatibleWithAttribute.cs
- XmlReflectionImporter.cs
- WebPartVerbCollection.cs
- QuaternionAnimationBase.cs
- ReturnEventArgs.cs
- SqlNotificationRequest.cs
- WindowClosedEventArgs.cs
- BufferedReadStream.cs
- EntityModelSchemaGenerator.cs
- SafeTokenHandle.cs
- AssemblyContextControlItem.cs
- EntityTypeEmitter.cs
- FamilyTypeface.cs
- ProfilePropertyNameValidator.cs
- XmlArrayAttribute.cs
- NonVisualControlAttribute.cs
- SqlXmlStorage.cs
- SynchronizationLockException.cs
- CultureInfoConverter.cs
- DbProviderFactoriesConfigurationHandler.cs
- AmbiguousMatchException.cs
- LocalFileSettingsProvider.cs
- SqlDataSourceQueryEditorForm.cs
- Clipboard.cs
- RegistryPermission.cs
- ConfigurationLocationCollection.cs
- SignerInfo.cs
- DoubleLink.cs
- ClassicBorderDecorator.cs
- DataGridPagerStyle.cs
- HealthMonitoringSection.cs
- DiscriminatorMap.cs
- ItemContainerGenerator.cs
- EntityDataSourceConfigureObjectContext.cs