Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / Update / Internal / RecordConverter.cs / 1305376 / 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. /// Indicates how to determine whether a property is modified. ///New instance expression. internal PropagatorResult ConvertOriginalValuesToPropagatorResult(IEntityStateEntry stateEntry, ModifiedPropertiesBehavior modifiedPropertiesBehavior) { return ConvertStateEntryToPropagatorResult(stateEntry, useCurrentValues: false, modifiedPropertiesBehavior: modifiedPropertiesBehavior); } ////// 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. /// Indicates how to determine whether a property is modified. ///New instance expression. internal PropagatorResult ConvertCurrentValuesToPropagatorResult(IEntityStateEntry stateEntry, ModifiedPropertiesBehavior modifiedPropertiesBehavior) { return ConvertStateEntryToPropagatorResult(stateEntry, useCurrentValues: true, modifiedPropertiesBehavior: modifiedPropertiesBehavior); } private PropagatorResult ConvertStateEntryToPropagatorResult(IEntityStateEntry stateEntry, bool useCurrentValues, ModifiedPropertiesBehavior modifiedPropertiesBehavior) { try { EntityUtil.CheckArgumentNull(stateEntry, "stateEntry"); IExtendedDataRecord record = useCurrentValues ? EntityUtil.CheckArgumentNull(stateEntry.CurrentValues as IExtendedDataRecord, "stateEntry.CurrentValues") : EntityUtil.CheckArgumentNull(stateEntry.OriginalValues as IExtendedDataRecord, "stateEntry.OriginalValues"); bool isModified = false; // the root of the state entry is unchanged because the type is static return ExtractorMetadata.ExtractResultFromRecord(stateEntry, isModified, record, useCurrentValues, m_updateTranslator, modifiedPropertiesBehavior); } 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. /// Indicates how to determine whether a property is modified. ///New instance expression. internal PropagatorResult ConvertOriginalValuesToPropagatorResult(IEntityStateEntry stateEntry, ModifiedPropertiesBehavior modifiedPropertiesBehavior) { return ConvertStateEntryToPropagatorResult(stateEntry, useCurrentValues: false, modifiedPropertiesBehavior: modifiedPropertiesBehavior); } ////// 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. /// Indicates how to determine whether a property is modified. ///New instance expression. internal PropagatorResult ConvertCurrentValuesToPropagatorResult(IEntityStateEntry stateEntry, ModifiedPropertiesBehavior modifiedPropertiesBehavior) { return ConvertStateEntryToPropagatorResult(stateEntry, useCurrentValues: true, modifiedPropertiesBehavior: modifiedPropertiesBehavior); } private PropagatorResult ConvertStateEntryToPropagatorResult(IEntityStateEntry stateEntry, bool useCurrentValues, ModifiedPropertiesBehavior modifiedPropertiesBehavior) { try { EntityUtil.CheckArgumentNull(stateEntry, "stateEntry"); IExtendedDataRecord record = useCurrentValues ? EntityUtil.CheckArgumentNull(stateEntry.CurrentValues as IExtendedDataRecord, "stateEntry.CurrentValues") : EntityUtil.CheckArgumentNull(stateEntry.OriginalValues as IExtendedDataRecord, "stateEntry.OriginalValues"); bool isModified = false; // the root of the state entry is unchanged because the type is static return ExtractorMetadata.ExtractResultFromRecord(stateEntry, isModified, record, useCurrentValues, m_updateTranslator, modifiedPropertiesBehavior); } 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
- SmiContextFactory.cs
- WebPartCancelEventArgs.cs
- XsltLibrary.cs
- GridEntry.cs
- ComponentConverter.cs
- Mapping.cs
- Blend.cs
- ServiceReference.cs
- TargetControlTypeAttribute.cs
- CodePageUtils.cs
- DetailsViewInsertedEventArgs.cs
- ViewLoader.cs
- ErrorRuntimeConfig.cs
- ArrayMergeHelper.cs
- PeerContact.cs
- InputEventArgs.cs
- FilterRepeater.cs
- TextTreeTextBlock.cs
- TimeoutValidationAttribute.cs
- ScriptControl.cs
- hwndwrapper.cs
- newinstructionaction.cs
- StsCommunicationException.cs
- SQLInt32.cs
- HtmlTableCellCollection.cs
- HtmlEmptyTagControlBuilder.cs
- DecimalConstantAttribute.cs
- SqlTriggerContext.cs
- IdentityHolder.cs
- PrintDialog.cs
- TickBar.cs
- RequestQueue.cs
- ObservableDictionary.cs
- IdentityReference.cs
- SerializationException.cs
- ReferentialConstraint.cs
- SettingsBindableAttribute.cs
- Pair.cs
- HtmlControlDesigner.cs
- TabRenderer.cs
- EntitySqlQueryCacheKey.cs
- TemplateManager.cs
- RawTextInputReport.cs
- ListBoxAutomationPeer.cs
- HtmlWindow.cs
- ProgressBar.cs
- DataContractSerializer.cs
- ParenExpr.cs
- PropertyDescriptor.cs
- ScaleTransform.cs
- WebBrowserUriTypeConverter.cs
- BoundColumn.cs
- ZoneLinkButton.cs
- ConfigurationManager.cs
- FontFamily.cs
- EdmSchemaError.cs
- TemplateModeChangedEventArgs.cs
- OracleLob.cs
- CacheMemory.cs
- UrlPropertyAttribute.cs
- SettingsAttributes.cs
- ToolBarOverflowPanel.cs
- ListViewItemMouseHoverEvent.cs
- HandleRef.cs
- RecognizedWordUnit.cs
- GZipDecoder.cs
- X500Name.cs
- MonitorWrapper.cs
- DataBoundControlHelper.cs
- RSAPKCS1SignatureFormatter.cs
- BufferedGraphicsManager.cs
- ScrollBarAutomationPeer.cs
- DBBindings.cs
- WebExceptionStatus.cs
- HtmlElementEventArgs.cs
- AddingNewEventArgs.cs
- COM2PropertyBuilderUITypeEditor.cs
- AstTree.cs
- TextAutomationPeer.cs
- ExtendedPropertyCollection.cs
- XmlAggregates.cs
- TextProperties.cs
- XamlWriter.cs
- TextViewBase.cs
- ControlBuilderAttribute.cs
- StatusBarItem.cs
- MimeFormReflector.cs
- ColorKeyFrameCollection.cs
- EntityClassGenerator.cs
- TypeBuilderInstantiation.cs
- ValueQuery.cs
- InkCanvasSelection.cs
- PasswordDeriveBytes.cs
- EntityClientCacheKey.cs
- CollectionDataContractAttribute.cs
- XmlBinaryReader.cs
- BindStream.cs
- TdsParser.cs
- WindowsNonControl.cs
- MgmtResManager.cs