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
- WebPartTransformerCollection.cs
- ASCIIEncoding.cs
- DataSourceGeneratorException.cs
- BinaryEditor.cs
- XsltArgumentList.cs
- OptimizedTemplateContent.cs
- ActivityWithResultValueSerializer.cs
- TouchFrameEventArgs.cs
- TemplateBindingExtensionConverter.cs
- FontDialog.cs
- SettingsContext.cs
- DoWorkEventArgs.cs
- Command.cs
- HitTestParameters3D.cs
- DesignerActionMethodItem.cs
- AsymmetricSignatureDeformatter.cs
- RawMouseInputReport.cs
- SkinBuilder.cs
- EdmError.cs
- ExceptionNotification.cs
- DataBoundControl.cs
- InvalidProgramException.cs
- TypedTableBase.cs
- WebPartMinimizeVerb.cs
- DynamicDataResources.Designer.cs
- WebBrowserNavigatingEventHandler.cs
- GCHandleCookieTable.cs
- ActivationArguments.cs
- StateMachineSubscription.cs
- CacheAxisQuery.cs
- WorkflowRuntimeServiceElementCollection.cs
- TypeUsageBuilder.cs
- SerializationInfo.cs
- FieldMetadata.cs
- ServiceMetadataBehavior.cs
- PlainXmlDeserializer.cs
- NetworkStream.cs
- ScriptingRoleServiceSection.cs
- Vector3dCollection.cs
- ProgressBar.cs
- CompensateDesigner.cs
- filewebresponse.cs
- OleTxTransaction.cs
- NativeWindow.cs
- ConstructorExpr.cs
- ElementMarkupObject.cs
- DictionaryItemsCollection.cs
- SmtpFailedRecipientsException.cs
- RangeValidator.cs
- TextTreeInsertElementUndoUnit.cs
- GroupJoinQueryOperator.cs
- login.cs
- ProtocolsConfiguration.cs
- DataSet.cs
- XmlSchemaAll.cs
- Queue.cs
- DataObject.cs
- PagedDataSource.cs
- NamespaceImport.cs
- CanExecuteRoutedEventArgs.cs
- AmbientLight.cs
- EntityObject.cs
- COM2Properties.cs
- TreeNodeBinding.cs
- StandardToolWindows.cs
- ResolveCriteriaCD1.cs
- ThicknessAnimation.cs
- DbProviderFactory.cs
- TransformerTypeCollection.cs
- Line.cs
- PropertySourceInfo.cs
- BaseServiceProvider.cs
- __Filters.cs
- FormatStringEditor.cs
- HostedNamedPipeTransportManager.cs
- Transform.cs
- SqlFunctionAttribute.cs
- GeneralTransform3DGroup.cs
- AncestorChangedEventArgs.cs
- RC2CryptoServiceProvider.cs
- HttpValueCollection.cs
- WebServiceMethodData.cs
- CloudCollection.cs
- DataGridViewRowCollection.cs
- XmlReader.cs
- Publisher.cs
- SplayTreeNode.cs
- XmlCDATASection.cs
- ArgumentNullException.cs
- ProxyWebPartManagerDesigner.cs
- OracleFactory.cs
- RtfToXamlLexer.cs
- Util.cs
- UnsafeNativeMethodsPenimc.cs
- TableLayoutPanelCellPosition.cs
- DPAPIProtectedConfigurationProvider.cs
- unsafeIndexingFilterStream.cs
- DataGridViewImageColumn.cs
- XPathNodeHelper.cs
- TemplateEditingFrame.cs