Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- BasePattern.cs
- LookupBindingPropertiesAttribute.cs
- HtmlLink.cs
- Configuration.cs
- SystemGatewayIPAddressInformation.cs
- CurrencyManager.cs
- ContextMarshalException.cs
- ImageAttributes.cs
- DropDownList.cs
- ToolStripDesignerAvailabilityAttribute.cs
- DistinctQueryOperator.cs
- StringInfo.cs
- CommonXSendMessage.cs
- FixedTextBuilder.cs
- InputMethod.cs
- IdentifierCollection.cs
- CompoundFileReference.cs
- SolidColorBrush.cs
- Stack.cs
- BlobPersonalizationState.cs
- MonitorWrapper.cs
- TypeDependencyAttribute.cs
- AbsoluteQuery.cs
- SerializableAuthorizationContext.cs
- IconConverter.cs
- FormViewRow.cs
- Object.cs
- UnsupportedPolicyOptionsException.cs
- ExpandableObjectConverter.cs
- ConfigXmlAttribute.cs
- GeometryCombineModeValidation.cs
- OletxTransactionHeader.cs
- ExpressionPrefixAttribute.cs
- GeometryModel3D.cs
- SqlLiftIndependentRowExpressions.cs
- RichTextBox.cs
- ScalarConstant.cs
- FormViewCommandEventArgs.cs
- DbParameterCollectionHelper.cs
- input.cs
- FormsAuthenticationConfiguration.cs
- XamlSerializer.cs
- IteratorFilter.cs
- PerfCounters.cs
- ListView.cs
- TrackingStringDictionary.cs
- Size.cs
- SystemWebExtensionsSectionGroup.cs
- ConstructorNeedsTagAttribute.cs
- RowParagraph.cs
- Choices.cs
- URI.cs
- DefaultClaimSet.cs
- SerializationInfo.cs
- AtomParser.cs
- ToolboxComponentsCreatedEventArgs.cs
- SettingsAttributes.cs
- ReverseInheritProperty.cs
- TextTreeFixupNode.cs
- EdmSchemaError.cs
- HttpCacheVaryByContentEncodings.cs
- LocalValueEnumerator.cs
- RoutedCommand.cs
- CodeTypeParameterCollection.cs
- XomlSerializationHelpers.cs
- Terminate.cs
- Viewport3DVisual.cs
- MetadataUtilsSmi.cs
- CngKeyCreationParameters.cs
- AddInSegmentDirectoryNotFoundException.cs
- DefaultParameterValueAttribute.cs
- cookiecollection.cs
- SwitchLevelAttribute.cs
- HttpCachePolicy.cs
- Bidi.cs
- WebEventTraceProvider.cs
- MarshalByValueComponent.cs
- SerializationInfo.cs
- MetadataItem.cs
- ToolStripSettings.cs
- ListViewItem.cs
- PackageStore.cs
- Int32Storage.cs
- TreeViewItemAutomationPeer.cs
- UpdateCommand.cs
- SwitchElementsCollection.cs
- ExtensionQuery.cs
- HeaderUtility.cs
- ClientBuildManagerCallback.cs
- WindowsGraphicsCacheManager.cs
- ClientSettings.cs
- GeneratedView.cs
- GraphicsState.cs
- OdbcConnection.cs
- AnonymousIdentificationModule.cs
- ContentElement.cs
- SecurityProtocolCorrelationState.cs
- DbBuffer.cs
- CommonXSendMessage.cs
- FunctionCommandText.cs