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
- EnumerableRowCollectionExtensions.cs
- Thread.cs
- GetImportedCardRequest.cs
- _NegoState.cs
- StyleSheetRefUrlEditor.cs
- InvalidPrinterException.cs
- Misc.cs
- SaveFileDialog.cs
- ZipFileInfo.cs
- AttachedPropertyMethodSelector.cs
- WebServiceData.cs
- FrameworkContentElementAutomationPeer.cs
- EncryptedData.cs
- MarkupExtensionReturnTypeAttribute.cs
- ColorMatrix.cs
- StackOverflowException.cs
- MetadataItemEmitter.cs
- ProvideValueServiceProvider.cs
- HttpFileCollection.cs
- SearchForVirtualItemEventArgs.cs
- CompilerInfo.cs
- TableLayout.cs
- SettingsPropertyCollection.cs
- UTF32Encoding.cs
- CodeGotoStatement.cs
- ProjectionCamera.cs
- KeyFrames.cs
- PermissionRequestEvidence.cs
- Int32Rect.cs
- DispatcherHooks.cs
- Vector3dCollection.cs
- dtdvalidator.cs
- PixelFormatConverter.cs
- CodeCompileUnit.cs
- ClientSettings.cs
- ContentPosition.cs
- EtwTrace.cs
- XXXInfos.cs
- HttpDebugHandler.cs
- PropertyPathWorker.cs
- COMException.cs
- QueryCacheEntry.cs
- RoleGroupCollectionEditor.cs
- OdbcConnectionOpen.cs
- RegexMatch.cs
- PageThemeCodeDomTreeGenerator.cs
- ImageSource.cs
- WebBrowserUriTypeConverter.cs
- DatagridviewDisplayedBandsData.cs
- SmiMetaDataProperty.cs
- ListBindingHelper.cs
- CompatibleComparer.cs
- RijndaelManagedTransform.cs
- QueueProcessor.cs
- ResourceSet.cs
- ReceiveActivityDesigner.cs
- TCPListener.cs
- EnvironmentPermission.cs
- Compress.cs
- XPathSelectionIterator.cs
- DesignTimeDataBinding.cs
- GlyphRunDrawing.cs
- ConfigurationManager.cs
- CommandHelpers.cs
- CollectionContainer.cs
- HyperLinkColumn.cs
- ConnectionInterfaceCollection.cs
- QuestionEventArgs.cs
- ScriptHandlerFactory.cs
- PropertyInfo.cs
- CompilerScopeManager.cs
- DataPagerField.cs
- TypeDescriptionProvider.cs
- UrlMappingsSection.cs
- NotConverter.cs
- ZoneButton.cs
- WebServiceTypeData.cs
- DoubleAnimationClockResource.cs
- LazyTextWriterCreator.cs
- PointHitTestResult.cs
- PageThemeParser.cs
- WebPartZoneCollection.cs
- ScrollContentPresenter.cs
- CapabilitiesUse.cs
- TemplateColumn.cs
- HttpHostedTransportConfiguration.cs
- OdbcUtils.cs
- WebHttpEndpoint.cs
- ProcessInfo.cs
- PngBitmapEncoder.cs
- BaseTemplateParser.cs
- FunctionImportElement.cs
- HtmlInputPassword.cs
- TreeNodeBinding.cs
- Stack.cs
- PropertyDescriptor.cs
- AnimationClock.cs
- ArgIterator.cs
- OleDbDataAdapter.cs
- ToolStripButton.cs