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
- TrueReadOnlyCollection.cs
- XmlSchemaAttribute.cs
- CellParagraph.cs
- FileNotFoundException.cs
- EdmToObjectNamespaceMap.cs
- EventSinkHelperWriter.cs
- TimeIntervalCollection.cs
- NamespaceInfo.cs
- NodeFunctions.cs
- ProcessProtocolHandler.cs
- BrowserCapabilitiesCompiler.cs
- DataGridViewUtilities.cs
- EntityContainerAssociationSet.cs
- RadioButtonStandardAdapter.cs
- ScriptModule.cs
- WindowsToolbar.cs
- LostFocusEventManager.cs
- EntityDataSource.cs
- FixedTextContainer.cs
- MDIControlStrip.cs
- AsyncCallback.cs
- FactoryMaker.cs
- MimePart.cs
- RuntimeEnvironment.cs
- BitmapMetadata.cs
- CqlGenerator.cs
- WebPartConnectionCollection.cs
- IDataContractSurrogate.cs
- ContainerControl.cs
- ElementNotAvailableException.cs
- GPPOINTF.cs
- SqlColumnizer.cs
- _Rfc2616CacheValidators.cs
- TraversalRequest.cs
- LinqDataView.cs
- ThreadStartException.cs
- ListenerAdapter.cs
- XsltArgumentList.cs
- XamlSerializer.cs
- DataGridTemplateColumn.cs
- ApplicationServicesHostFactory.cs
- BoundField.cs
- SplitterCancelEvent.cs
- WebServiceParameterData.cs
- SwitchAttribute.cs
- ZipFileInfo.cs
- TextSpanModifier.cs
- AppSettingsSection.cs
- WinInetCache.cs
- RegexMatch.cs
- Hash.cs
- NativeMethods.cs
- FunctionGenerator.cs
- WindowsHyperlink.cs
- SimpleLine.cs
- FormDocumentDesigner.cs
- HttpStreamMessageEncoderFactory.cs
- LoginCancelEventArgs.cs
- InputProcessorProfilesLoader.cs
- ParagraphResult.cs
- PageParserFilter.cs
- InvalidPipelineStoreException.cs
- ProfileService.cs
- BitmapEffectGroup.cs
- ContentPresenter.cs
- BookmarkEventArgs.cs
- OdbcHandle.cs
- QilStrConcat.cs
- MonitorWrapper.cs
- ConfigurationLocationCollection.cs
- ColumnHeaderConverter.cs
- CmsUtils.cs
- EdmItemCollection.cs
- OletxResourceManager.cs
- WebPartMovingEventArgs.cs
- BufferedGraphicsManager.cs
- InputLanguageManager.cs
- SettingsAttributeDictionary.cs
- DiagnosticsConfiguration.cs
- RequestContext.cs
- RenderDataDrawingContext.cs
- SessionStateItemCollection.cs
- ProgressBar.cs
- PerfCounterSection.cs
- XmlSchemaRedefine.cs
- MD5CryptoServiceProvider.cs
- ScriptRegistrationManager.cs
- ChangesetResponse.cs
- Int32RectValueSerializer.cs
- KeyManager.cs
- HttpCookie.cs
- RegistryPermission.cs
- EmptyEnumerator.cs
- MessageBuffer.cs
- TextTreeInsertElementUndoUnit.cs
- ACE.cs
- HttpRequestContext.cs
- BooleanFunctions.cs
- LayoutEngine.cs
- DynamicValidator.cs