Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Map / Update / Internal / RecordConverter.cs / 1 / 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
- ExtractedStateEntry.cs
- HttpStreamXmlDictionaryReader.cs
- Activator.cs
- QilSortKey.cs
- ToggleProviderWrapper.cs
- TableRow.cs
- IgnoreSectionHandler.cs
- StylusTouchDevice.cs
- ScriptResourceInfo.cs
- OperationCanceledException.cs
- DependencyPropertyHelper.cs
- SelectionHighlightInfo.cs
- ChunkedMemoryStream.cs
- DialogResultConverter.cs
- GeometryValueSerializer.cs
- CqlErrorHelper.cs
- GenericEnumerator.cs
- FixedSOMLineCollection.cs
- MetadataArtifactLoader.cs
- LogicalExpr.cs
- BackgroundFormatInfo.cs
- SettingsPropertyCollection.cs
- SafeNativeMethods.cs
- Parameter.cs
- TypeDelegator.cs
- MenuItem.cs
- DataTableClearEvent.cs
- X509CertificateCollection.cs
- RegionIterator.cs
- XsdBuilder.cs
- EventRecordWrittenEventArgs.cs
- MappingMetadataHelper.cs
- ServiceReference.cs
- SettingsContext.cs
- ColorBlend.cs
- UrlPath.cs
- HostedElements.cs
- BitmapEffectDrawingContent.cs
- COM2EnumConverter.cs
- PaginationProgressEventArgs.cs
- QueryResultOp.cs
- DataSourceCacheDurationConverter.cs
- ColorAnimationBase.cs
- XmlIterators.cs
- ChangeBlockUndoRecord.cs
- VisualState.cs
- PolygonHotSpot.cs
- SqlGenerator.cs
- RuleCache.cs
- NativeCompoundFileAPIs.cs
- BuilderPropertyEntry.cs
- SqlClientPermission.cs
- WebPartConnectionsCloseVerb.cs
- PropertyChange.cs
- HttpStreamXmlDictionaryReader.cs
- CatalogZoneDesigner.cs
- View.cs
- xdrvalidator.cs
- BamlLocalizationDictionary.cs
- SurrogateSelector.cs
- CurrentChangingEventManager.cs
- input.cs
- IconConverter.cs
- ToolboxItemAttribute.cs
- WebPartConnectionsCloseVerb.cs
- ChtmlTextBoxAdapter.cs
- Effect.cs
- InvokeProviderWrapper.cs
- DataGridViewCellStyleChangedEventArgs.cs
- ResourceManager.cs
- GeometryConverter.cs
- Control.cs
- Cloud.cs
- QilStrConcatenator.cs
- PersistChildrenAttribute.cs
- StylusPointPropertyInfoDefaults.cs
- BindingExpressionBase.cs
- BitmapCodecInfoInternal.cs
- DataTable.cs
- FieldAccessException.cs
- XmlAttributeCollection.cs
- ApplicationBuildProvider.cs
- ModelChangedEventArgsImpl.cs
- SubstitutionList.cs
- UIntPtr.cs
- PropertyConverter.cs
- FixUp.cs
- MonitoringDescriptionAttribute.cs
- processwaithandle.cs
- KeyInterop.cs
- AudioFormatConverter.cs
- WebBrowserBase.cs
- DataServiceQuery.cs
- SimpleWorkerRequest.cs
- MasterPageBuildProvider.cs
- FastPropertyAccessor.cs
- SymbolDocumentGenerator.cs
- ComponentCommands.cs
- XmlSchemaComplexContentExtension.cs
- ConsoleKeyInfo.cs