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
- WebBrowsableAttribute.cs
- Helper.cs
- ReflectionTypeLoadException.cs
- ZipArchive.cs
- RepeaterCommandEventArgs.cs
- XmlSerializationReader.cs
- PropertyValidationContext.cs
- ObjectViewQueryResultData.cs
- TimelineClockCollection.cs
- ExplicitDiscriminatorMap.cs
- SqlDataSourceFilteringEventArgs.cs
- HtmlControlAdapter.cs
- ACE.cs
- WebWorkflowRole.cs
- _Connection.cs
- XmlSchemaExporter.cs
- HtmlPanelAdapter.cs
- PreviewPageInfo.cs
- LineGeometry.cs
- InputScopeAttribute.cs
- DbSourceCommand.cs
- SimpleRecyclingCache.cs
- TriState.cs
- ManipulationDevice.cs
- EdmToObjectNamespaceMap.cs
- FixedSOMTextRun.cs
- List.cs
- InlineObject.cs
- PageMediaSize.cs
- _NegoStream.cs
- PngBitmapEncoder.cs
- XmlSchemaComplexContentRestriction.cs
- ProfilePropertySettings.cs
- DPAPIProtectedConfigurationProvider.cs
- ClaimTypes.cs
- AuthenticatingEventArgs.cs
- TextEditorThreadLocalStore.cs
- BufferedWebEventProvider.cs
- SoapIgnoreAttribute.cs
- Math.cs
- ContentElement.cs
- UriTemplateTrieLocation.cs
- UIInitializationException.cs
- RtType.cs
- AttributeCollection.cs
- TextBoxRenderer.cs
- ViewCellSlot.cs
- TableLayoutStyleCollection.cs
- HashRepartitionEnumerator.cs
- IsolatedStorageException.cs
- OwnerDrawPropertyBag.cs
- PageParserFilter.cs
- ShaderEffect.cs
- StorageEndPropertyMapping.cs
- NameValuePair.cs
- PackagingUtilities.cs
- MetadataSerializer.cs
- Part.cs
- SourceSwitch.cs
- StrokeNodeOperations2.cs
- ScrollPattern.cs
- SystemDropShadowChrome.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- PermissionAttributes.cs
- ThreadExceptionDialog.cs
- TransactionBehavior.cs
- AndCondition.cs
- TraceInternal.cs
- CustomPopupPlacement.cs
- DelegatingTypeDescriptionProvider.cs
- CreatingCookieEventArgs.cs
- UndoManager.cs
- XmlSchemaObjectTable.cs
- ListViewGroupCollectionEditor.cs
- MetadataPropertyvalue.cs
- RegionIterator.cs
- SoapMessage.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- GeneralTransformGroup.cs
- __Error.cs
- WriteLineDesigner.xaml.cs
- LambdaReference.cs
- SqlTopReducer.cs
- MetabaseServerConfig.cs
- NotFiniteNumberException.cs
- DataObjectMethodAttribute.cs
- SqlBuffer.cs
- ControllableStoryboardAction.cs
- PeerNameRegistration.cs
- AppModelKnownContentFactory.cs
- XmlDocumentViewSchema.cs
- PageStatePersister.cs
- DesignerSerializationOptionsAttribute.cs
- XslTransformFileEditor.cs
- ListView.cs
- RowSpanVector.cs
- ClaimComparer.cs
- DataServiceRequestArgs.cs
- SqlDataSourceQueryConverter.cs
- SystemTcpConnection.cs