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
- ItemCollection.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- KnownAssemblyEntry.cs
- RSAPKCS1KeyExchangeFormatter.cs
- LayoutInformation.cs
- ModuleBuilderData.cs
- StronglyTypedResourceBuilder.cs
- EventSinkHelperWriter.cs
- InvalidAsynchronousStateException.cs
- ExclusiveNamedPipeTransportManager.cs
- NativeCppClassAttribute.cs
- DecoratedNameAttribute.cs
- DataSetUtil.cs
- QilReplaceVisitor.cs
- XmlSignatureManifest.cs
- ScriptIgnoreAttribute.cs
- ObjectConverter.cs
- OptimisticConcurrencyException.cs
- DbModificationClause.cs
- XmlTextWriter.cs
- RemoteWebConfigurationHost.cs
- TailPinnedEventArgs.cs
- DBBindings.cs
- ApplicationInterop.cs
- DbSetClause.cs
- connectionpool.cs
- CaseDesigner.xaml.cs
- Privilege.cs
- CacheRequest.cs
- ObjectStateEntry.cs
- WebEventCodes.cs
- DatatypeImplementation.cs
- AssemblySettingAttributes.cs
- CreateUserErrorEventArgs.cs
- ToolStripOverflow.cs
- DataGridViewCellCollection.cs
- CompilerTypeWithParams.cs
- DataViewSettingCollection.cs
- OrderToken.cs
- ErrorBehavior.cs
- SmtpTransport.cs
- SqlInternalConnectionTds.cs
- ConfigurationLocation.cs
- InvalidOperationException.cs
- PasswordTextNavigator.cs
- WindowsGraphicsWrapper.cs
- SortQuery.cs
- Thread.cs
- IndexerNameAttribute.cs
- State.cs
- XmlSchemaSimpleContentExtension.cs
- RemotingAttributes.cs
- SessionSwitchEventArgs.cs
- Native.cs
- CacheDict.cs
- TextElement.cs
- AccessibilityApplicationManager.cs
- EntryIndex.cs
- TreeViewEvent.cs
- RowsCopiedEventArgs.cs
- InvalidCommandTreeException.cs
- CheckBox.cs
- AutomationPattern.cs
- XmlDownloadManager.cs
- AsyncResult.cs
- MimeParameter.cs
- DiscoveryReference.cs
- MobileDeviceCapabilitiesSectionHandler.cs
- ComboBoxItem.cs
- PackageDigitalSignature.cs
- XmlWriterTraceListener.cs
- Stacktrace.cs
- EditorServiceContext.cs
- URLString.cs
- CatalogPartCollection.cs
- ExpressionSelection.cs
- TreeNodeCollectionEditor.cs
- Events.cs
- EncodingTable.cs
- ConstructorNeedsTagAttribute.cs
- ListViewItemEventArgs.cs
- HtmlInputCheckBox.cs
- CustomAttributeBuilder.cs
- MTConfigUtil.cs
- SoapException.cs
- AttributeUsageAttribute.cs
- UrlPath.cs
- DataGridCommandEventArgs.cs
- PageCache.cs
- TableLayout.cs
- _ProxyChain.cs
- ProviderCommandInfoUtils.cs
- DropTarget.cs
- SchemaInfo.cs
- TypeDependencyAttribute.cs
- CodeStatement.cs
- ScrollBarRenderer.cs
- ExtendedPropertyCollection.cs
- Highlights.cs
- BrowsableAttribute.cs