Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Map / Update / Internal / RecordConverter.cs / 2 / RecordConverter.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common; using System.Data.Metadata.Edm; using System.Data.Objects; using System.Collections.Generic; using System.Data.Common.Utils; using System.Collections; using System.Data.Entity; namespace System.Data.Mapping.Update.Internal { ////// Converts records to new instance expressions. Assumes that all inputs come from a single data reader (because /// it caches record layout). If multiple readers are used, multiple converters must be constructed in case /// the different readers return different layouts for types. /// ////// Conventions for modifiedProperties enumeration: null means all properties are modified, empty means none, /// non-empty means some. /// internal class RecordConverter { #region Constructors ////// Initializes a new converter given a command tree context. Initializes a new record layout cache. /// /// Setsinternal RecordConverter(UpdateTranslator updateTranslator) { m_updateTranslator = updateTranslator; } #endregion #region Fields /// /// Context used to produce expressions. /// private UpdateTranslator m_updateTranslator; #endregion #region Methods ////// Converts original values in a state entry to a DbNewInstanceExpression. The record must be either an entity or /// a relationship set instance. /// ////// This method is not thread safe. /// /// Gets state entry this record is associated with. /// A list of modified properties. See remarks on this class for details. ///New instance expression. internal PropagatorResult ConvertOriginalValuesToPropagatorResult(IEntityStateEntry stateEntry, IEnumerablemodifiedProperties) { return ConvertStateEntryToPropagatorResult(stateEntry, modifiedProperties, true /*useOriginalValues*/); } /// /// Converts current values in a state entry to a DbNewInstanceExpression. The record must be either an entity or /// a relationship set instance. /// ////// This method is not thread safe. /// /// Gets state entry this record is associated with. /// A list of modified properties. See remarks on this class for details. ///New instance expression. internal PropagatorResult ConvertCurrentValuesToPropagatorResult(IEntityStateEntry stateEntry, IEnumerablemodifiedProperties) { return ConvertStateEntryToPropagatorResult(stateEntry, modifiedProperties, false /*useOriginalValues*/); } private PropagatorResult ConvertStateEntryToPropagatorResult(IEntityStateEntry stateEntry, IEnumerable modifiedProperties, bool useOriginalValues) { try { EntityUtil.CheckArgumentNull(stateEntry, "stateEntry"); IExtendedDataRecord record = useOriginalValues ? EntityUtil.CheckArgumentNull(stateEntry.OriginalValues as IExtendedDataRecord, "stateEntry.OriginalValues") : EntityUtil.CheckArgumentNull(stateEntry.CurrentValues as IExtendedDataRecord, "stateEntry.CurrentValues"); bool isModified = false; // the root of the state entry is unchanged because the type is static return ExtractorMetadata.ExtractResultFromRecord(stateEntry, isModified, record, modifiedProperties, m_updateTranslator); } catch (Exception e) { if (UpdateTranslator.RequiresContext(e)) { throw EntityUtil.Update(Strings.Update_ErrorLoadingRecord, e, stateEntry); } throw; } } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common; using System.Data.Metadata.Edm; using System.Data.Objects; using System.Collections.Generic; using System.Data.Common.Utils; using System.Collections; using System.Data.Entity; namespace System.Data.Mapping.Update.Internal { ////// Converts records to new instance expressions. Assumes that all inputs come from a single data reader (because /// it caches record layout). If multiple readers are used, multiple converters must be constructed in case /// the different readers return different layouts for types. /// ////// Conventions for modifiedProperties enumeration: null means all properties are modified, empty means none, /// non-empty means some. /// internal class RecordConverter { #region Constructors ////// Initializes a new converter given a command tree context. Initializes a new record layout cache. /// /// Setsinternal RecordConverter(UpdateTranslator updateTranslator) { m_updateTranslator = updateTranslator; } #endregion #region Fields /// /// Context used to produce expressions. /// private UpdateTranslator m_updateTranslator; #endregion #region Methods ////// Converts original values in a state entry to a DbNewInstanceExpression. The record must be either an entity or /// a relationship set instance. /// ////// This method is not thread safe. /// /// Gets state entry this record is associated with. /// A list of modified properties. See remarks on this class for details. ///New instance expression. internal PropagatorResult ConvertOriginalValuesToPropagatorResult(IEntityStateEntry stateEntry, IEnumerablemodifiedProperties) { return ConvertStateEntryToPropagatorResult(stateEntry, modifiedProperties, true /*useOriginalValues*/); } /// /// Converts current values in a state entry to a DbNewInstanceExpression. The record must be either an entity or /// a relationship set instance. /// ////// This method is not thread safe. /// /// Gets state entry this record is associated with. /// A list of modified properties. See remarks on this class for details. ///New instance expression. internal PropagatorResult ConvertCurrentValuesToPropagatorResult(IEntityStateEntry stateEntry, IEnumerablemodifiedProperties) { return ConvertStateEntryToPropagatorResult(stateEntry, modifiedProperties, false /*useOriginalValues*/); } private PropagatorResult ConvertStateEntryToPropagatorResult(IEntityStateEntry stateEntry, IEnumerable modifiedProperties, bool useOriginalValues) { try { EntityUtil.CheckArgumentNull(stateEntry, "stateEntry"); IExtendedDataRecord record = useOriginalValues ? EntityUtil.CheckArgumentNull(stateEntry.OriginalValues as IExtendedDataRecord, "stateEntry.OriginalValues") : EntityUtil.CheckArgumentNull(stateEntry.CurrentValues as IExtendedDataRecord, "stateEntry.CurrentValues"); bool isModified = false; // the root of the state entry is unchanged because the type is static return ExtractorMetadata.ExtractResultFromRecord(stateEntry, isModified, record, modifiedProperties, m_updateTranslator); } catch (Exception e) { if (UpdateTranslator.RequiresContext(e)) { throw EntityUtil.Update(Strings.Update_ErrorLoadingRecord, e, stateEntry); } throw; } } #endregion } } // 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
- AccessorTable.cs
- Rss20ItemFormatter.cs
- ValidationRuleCollection.cs
- SingleKeyFrameCollection.cs
- ServiceNameElement.cs
- SliderAutomationPeer.cs
- NetworkAddressChange.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- ReadOnlyDataSource.cs
- Converter.cs
- SoapElementAttribute.cs
- WhitespaceReader.cs
- DataServiceQueryContinuation.cs
- LinearGradientBrush.cs
- MDIClient.cs
- ResourceDescriptionAttribute.cs
- FormattedTextSymbols.cs
- WebPartVerbsEventArgs.cs
- ParseChildrenAsPropertiesAttribute.cs
- AddInDeploymentState.cs
- GlyphCache.cs
- ApplicationTrust.cs
- ContextStaticAttribute.cs
- StringUtil.cs
- AdRotator.cs
- TextDecorations.cs
- XmlSchemaInclude.cs
- RemoteWebConfigurationHost.cs
- AxHostDesigner.cs
- LightweightCodeGenerator.cs
- CompilerTypeWithParams.cs
- ListSurrogate.cs
- QuaternionConverter.cs
- _ListenerRequestStream.cs
- Pair.cs
- SrgsElementFactory.cs
- PagePropertiesChangingEventArgs.cs
- HttpProfileBase.cs
- ClosableStream.cs
- HttpDateParse.cs
- SHA256Managed.cs
- SoapFormatExtensions.cs
- SizeConverter.cs
- SmtpTransport.cs
- CompilationUtil.cs
- AtomEntry.cs
- RootNamespaceAttribute.cs
- NamespaceQuery.cs
- XmlLinkedNode.cs
- ComponentEditorForm.cs
- DatatypeImplementation.cs
- EventLogger.cs
- UpDownEvent.cs
- HtmlAnchor.cs
- FacetValueContainer.cs
- SettingsProperty.cs
- SharedPersonalizationStateInfo.cs
- ObjectReaderCompiler.cs
- ServicePoint.cs
- IntSecurity.cs
- MailDefinition.cs
- WeakReferenceEnumerator.cs
- PropertyOverridesDialog.cs
- IncrementalHitTester.cs
- RotateTransform.cs
- WebPartCatalogAddVerb.cs
- TraceSection.cs
- SerializationSectionGroup.cs
- SqlNotificationRequest.cs
- CollectionDataContractAttribute.cs
- ScrollChangedEventArgs.cs
- TextTreePropertyUndoUnit.cs
- StyleCollectionEditor.cs
- TaskFormBase.cs
- XmlTextWriter.cs
- SymDocumentType.cs
- ContentElementAutomationPeer.cs
- DictionarySurrogate.cs
- GlyphRunDrawing.cs
- ResourcePool.cs
- UrlAuthorizationModule.cs
- RuntimeConfigurationRecord.cs
- StructuredTypeEmitter.cs
- CombinedGeometry.cs
- ServiceDescriptionReflector.cs
- ConfigurationSchemaErrors.cs
- RelationshipEndCollection.cs
- TrackingMemoryStream.cs
- MultipartContentParser.cs
- _NTAuthentication.cs
- ProgressiveCrcCalculatingStream.cs
- HwndProxyElementProvider.cs
- CornerRadius.cs
- RemoteWebConfigurationHostServer.cs
- DeclarativeCatalogPart.cs
- MatrixValueSerializer.cs
- TabControl.cs
- ObjectStateEntryDbDataRecord.cs
- ExeContext.cs
- _BaseOverlappedAsyncResult.cs