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
- Grant.cs
- login.cs
- WebControlAdapter.cs
- SqlUtils.cs
- TreeChangeInfo.cs
- _TransmitFileOverlappedAsyncResult.cs
- StringKeyFrameCollection.cs
- SimpleRecyclingCache.cs
- FixedNode.cs
- XmlNavigatorFilter.cs
- String.cs
- OrderByLifter.cs
- ToolStripItemClickedEventArgs.cs
- XmlSchemaCollection.cs
- Animatable.cs
- ContentDesigner.cs
- SqlParameterizer.cs
- AlternateViewCollection.cs
- ScriptingJsonSerializationSection.cs
- SymmetricAlgorithm.cs
- XmlDeclaration.cs
- DataError.cs
- SemanticKeyElement.cs
- MemberPath.cs
- CommandHelpers.cs
- CodeParameterDeclarationExpression.cs
- TabRenderer.cs
- OpCellTreeNode.cs
- RegexRunnerFactory.cs
- ComponentCommands.cs
- ChannelManager.cs
- SafeCryptHandles.cs
- EnumValidator.cs
- KeyboardEventArgs.cs
- SByte.cs
- OverlappedContext.cs
- NativeMethods.cs
- SqlUtils.cs
- DiagnosticsConfigurationHandler.cs
- HostingPreferredMapPath.cs
- FusionWrap.cs
- XmlDataImplementation.cs
- ToolboxControl.cs
- StringStorage.cs
- DbConnectionFactory.cs
- AdapterDictionary.cs
- ObjectDataSourceFilteringEventArgs.cs
- EventProxy.cs
- XamlSerializationHelper.cs
- OutArgumentConverter.cs
- DllHostedComPlusServiceHost.cs
- NullableBoolConverter.cs
- VirtualDirectoryMapping.cs
- MiniCustomAttributeInfo.cs
- CompModHelpers.cs
- IDispatchConstantAttribute.cs
- DbConnectionFactory.cs
- MaterialGroup.cs
- AsyncOperationManager.cs
- XsltOutput.cs
- DataControlReference.cs
- WindowsComboBox.cs
- IisTraceWebEventProvider.cs
- PointAnimationUsingPath.cs
- EntityObject.cs
- ObjectSecurity.cs
- MetadataPropertyvalue.cs
- StringUtil.cs
- PrePostDescendentsWalker.cs
- SubMenuStyle.cs
- SelectionGlyph.cs
- SqlMetaData.cs
- MultiPageTextView.cs
- Variant.cs
- SqlColumnizer.cs
- BaseAddressElementCollection.cs
- PopupControlService.cs
- TabletDevice.cs
- MaskedTextBoxTextEditor.cs
- WebPartEventArgs.cs
- FormatSettings.cs
- SoapSchemaImporter.cs
- ImportContext.cs
- DbConnectionHelper.cs
- EnumerableRowCollection.cs
- MetadataCollection.cs
- WindowHideOrCloseTracker.cs
- VirtualPathProvider.cs
- RijndaelManaged.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- ContextMenuStrip.cs
- BigInt.cs
- EqualityArray.cs
- BaseParser.cs
- ContentFilePart.cs
- AnnotationAuthorChangedEventArgs.cs
- ToolStripOverflowButton.cs
- AssemblyName.cs
- MenuCommand.cs
- AsymmetricKeyExchangeFormatter.cs