Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- PngBitmapEncoder.cs
- RegexRunnerFactory.cs
- TemplatedWizardStep.cs
- WebPartManagerInternals.cs
- StatusInfoItem.cs
- SoapFault.cs
- EdmToObjectNamespaceMap.cs
- ShutDownListener.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- IConvertible.cs
- PrintController.cs
- FactoryGenerator.cs
- GridViewRowCollection.cs
- DataGridViewAdvancedBorderStyle.cs
- SqlVersion.cs
- TextAdaptor.cs
- SpotLight.cs
- ToolStripDropDownClosedEventArgs.cs
- LogReservationCollection.cs
- NotSupportedException.cs
- WindowsBrush.cs
- ThousandthOfEmRealDoubles.cs
- ListViewPagedDataSource.cs
- XmlText.cs
- LocatorGroup.cs
- CodeDomSerializer.cs
- Vector3dCollection.cs
- cryptoapiTransform.cs
- AppDomainAttributes.cs
- SwitchExpression.cs
- TemplatedMailWebEventProvider.cs
- EventLogger.cs
- HttpEncoder.cs
- SerialReceived.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- StateMachineAction.cs
- ToolboxItemAttribute.cs
- PropertyCondition.cs
- ScrollableControl.cs
- HtmlTable.cs
- WebSysDefaultValueAttribute.cs
- DataServiceProcessingPipeline.cs
- RuleSetDialog.Designer.cs
- MSAAWinEventWrap.cs
- QilBinary.cs
- WebBrowserNavigatedEventHandler.cs
- EntityTemplateFactory.cs
- SimpleWorkerRequest.cs
- TextBounds.cs
- MetadataItemEmitter.cs
- PenContext.cs
- ColorKeyFrameCollection.cs
- HashSetDebugView.cs
- ValueOfAction.cs
- BulletDecorator.cs
- ObjectToIdCache.cs
- StateManager.cs
- TextBlock.cs
- FacetChecker.cs
- ModifiableIteratorCollection.cs
- SectionXmlInfo.cs
- BitmapData.cs
- BasicCellRelation.cs
- EntityModelSchemaGenerator.cs
- GradientStop.cs
- VisualBasicSettingsHandler.cs
- MgmtResManager.cs
- CodeStatementCollection.cs
- UIElement.cs
- FormView.cs
- HwndStylusInputProvider.cs
- DataGridViewLinkColumn.cs
- Int32KeyFrameCollection.cs
- TransformConverter.cs
- EnumerableRowCollection.cs
- ViewCellRelation.cs
- TokenBasedSetEnumerator.cs
- DefaultPropertyAttribute.cs
- WebPartDisplayModeCollection.cs
- FamilyMapCollection.cs
- EntityConnection.cs
- TextElementEnumerator.cs
- SizeAnimationBase.cs
- MonthChangedEventArgs.cs
- DocumentSequence.cs
- TemplateControl.cs
- LicenseException.cs
- TitleStyle.cs
- LogReservationCollection.cs
- ContractAdapter.cs
- PerCallInstanceContextProvider.cs
- SmiMetaData.cs
- ConfigDefinitionUpdates.cs
- SQLDecimal.cs
- SqlComparer.cs
- QueueProcessor.cs
- OdbcConnectionStringbuilder.cs
- DispatcherSynchronizationContext.cs
- SqlTriggerAttribute.cs
- X509Certificate.cs