Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / ndp / fx / src / DataEntity / System / Data / EntityClient / EntityAdapter.cs / 3 / EntityAdapter.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....], [....] //--------------------------------------------------------------------- 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 [....], [....] //--------------------------------------------------------------------- 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
- GB18030Encoding.cs
- XamlStream.cs
- ToolBar.cs
- _BasicClient.cs
- PaginationProgressEventArgs.cs
- PageOutputColor.cs
- LocatorManager.cs
- StatusBarPanel.cs
- DataContractJsonSerializer.cs
- TargetControlTypeAttribute.cs
- CodeCatchClause.cs
- SoapServerMethod.cs
- DocumentViewerBaseAutomationPeer.cs
- Perspective.cs
- TypeConverterHelper.cs
- GridViewUpdatedEventArgs.cs
- ListViewDataItem.cs
- SessionEndingCancelEventArgs.cs
- RewritingValidator.cs
- MissingSatelliteAssemblyException.cs
- Polyline.cs
- DelegateSerializationHolder.cs
- ExpandoObject.cs
- FieldNameLookup.cs
- XmlMemberMapping.cs
- cookiecontainer.cs
- CommandBinding.cs
- RestClientProxyHandler.cs
- TaiwanLunisolarCalendar.cs
- AsymmetricSignatureDeformatter.cs
- WindowsSpinner.cs
- XmlSchemaGroupRef.cs
- ModuleConfigurationInfo.cs
- BookmarkTable.cs
- RegexStringValidator.cs
- GraphicsState.cs
- ConnectionModeReader.cs
- CodeIndexerExpression.cs
- DbTypeMap.cs
- TextTreeDeleteContentUndoUnit.cs
- ScriptingWebServicesSectionGroup.cs
- BinaryMethodMessage.cs
- PlainXmlSerializer.cs
- StyleSheet.cs
- EndpointInstanceProvider.cs
- sapiproxy.cs
- ResourceAttributes.cs
- PrimaryKeyTypeConverter.cs
- TypeCollectionDesigner.xaml.cs
- TextSelection.cs
- IpcChannelHelper.cs
- MultiTouchSystemGestureLogic.cs
- HyperLinkColumn.cs
- SubMenuStyle.cs
- SamlAuthorizationDecisionStatement.cs
- HtmlTernaryTree.cs
- GlyphRunDrawing.cs
- XmlnsDefinitionAttribute.cs
- DataViewSetting.cs
- WMICapabilities.cs
- control.ime.cs
- XmlSchemaAttribute.cs
- NamedPipeAppDomainProtocolHandler.cs
- RemotingAttributes.cs
- ComplexPropertyEntry.cs
- COM2PropertyBuilderUITypeEditor.cs
- Triangle.cs
- CurrentChangingEventArgs.cs
- ToolStripOverflow.cs
- UnhandledExceptionEventArgs.cs
- NextPreviousPagerField.cs
- StringUtil.cs
- DbParameterCollectionHelper.cs
- DataListComponentEditor.cs
- StyleXamlTreeBuilder.cs
- TrackBar.cs
- DropDownHolder.cs
- RadioButtonStandardAdapter.cs
- ComponentRenameEvent.cs
- MappingException.cs
- FontWeight.cs
- WebPartVerbCollection.cs
- Cursors.cs
- SiteOfOriginContainer.cs
- StreamingContext.cs
- InvalidProgramException.cs
- AuthenticationService.cs
- ExtendedProtectionPolicyTypeConverter.cs
- FontStretch.cs
- EncoderExceptionFallback.cs
- FixedSOMSemanticBox.cs
- ValidationResult.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- OracleFactory.cs
- DataColumn.cs
- SingleStorage.cs
- SmtpException.cs
- RepeaterItem.cs
- sqlnorm.cs
- ParameterElement.cs