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
- OracleFactory.cs
- UniformGrid.cs
- WizardSideBarListControlItem.cs
- EventDescriptorCollection.cs
- Pts.cs
- _SSPIWrapper.cs
- WebPartTransformer.cs
- TypeConverterBase.cs
- ContentType.cs
- WebAdminConfigurationHelper.cs
- Size3DValueSerializer.cs
- LostFocusEventManager.cs
- ColumnReorderedEventArgs.cs
- FormViewModeEventArgs.cs
- SpellerHighlightLayer.cs
- DataGrid.cs
- DataGridViewRowContextMenuStripNeededEventArgs.cs
- CopyAction.cs
- _HeaderInfo.cs
- Boolean.cs
- TdsParameterSetter.cs
- XmlSchemaExporter.cs
- ForEach.cs
- NotifyInputEventArgs.cs
- BCLDebug.cs
- ApplicationSecurityInfo.cs
- HelpOperationInvoker.cs
- SystemFonts.cs
- TerminateSequence.cs
- ListGeneralPage.cs
- TraceUtils.cs
- SimpleApplicationHost.cs
- NativeMethods.cs
- HtmlControl.cs
- UserControlCodeDomTreeGenerator.cs
- DrawListViewItemEventArgs.cs
- ElementNotAvailableException.cs
- BrowsableAttribute.cs
- PrimitiveType.cs
- AccessDataSourceView.cs
- namescope.cs
- FontWeight.cs
- ValidatorUtils.cs
- RuntimeWrappedException.cs
- ModuleElement.cs
- Journal.cs
- SetIterators.cs
- PageAdapter.cs
- NavigationProperty.cs
- CachedBitmap.cs
- CreateUserWizard.cs
- SafeThemeHandle.cs
- HostExecutionContextManager.cs
- UnlockInstanceCommand.cs
- RecipientServiceModelSecurityTokenRequirement.cs
- EventEntry.cs
- SqlRowUpdatedEvent.cs
- KoreanCalendar.cs
- PolicyManager.cs
- XPathNodeInfoAtom.cs
- HebrewNumber.cs
- EnumerableValidator.cs
- figurelength.cs
- VolatileResourceManager.cs
- AsyncResult.cs
- SecurityRequiresReviewAttribute.cs
- Item.cs
- ResourceContainerWrapper.cs
- XmlDictionary.cs
- streamingZipPartStream.cs
- DataControlFieldHeaderCell.cs
- SqlCachedBuffer.cs
- EntityDataSourceReferenceGroup.cs
- DataViewManager.cs
- SafeThemeHandle.cs
- webeventbuffer.cs
- SoapAttributeAttribute.cs
- ControlPropertyNameConverter.cs
- MetadataItem_Static.cs
- InfocardExtendedInformationEntry.cs
- TreeNodeBindingCollection.cs
- CalendarDateChangedEventArgs.cs
- ActivityDesignerResources.cs
- KeyTimeConverter.cs
- AssemblyAttributesGoHere.cs
- SoapServerProtocol.cs
- CursorInteropHelper.cs
- Schema.cs
- LoginName.cs
- Brush.cs
- DebugViewWriter.cs
- ObjectDataSourceSelectingEventArgs.cs
- RemoteCryptoTokenProvider.cs
- RemotingConfigParser.cs
- SHA1CryptoServiceProvider.cs
- BaseServiceProvider.cs
- HtmlInputPassword.cs
- isolationinterop.cs
- ApplicationBuildProvider.cs
- ProxyAssemblyNotLoadedException.cs