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
- PackageStore.cs
- ObjectReaderCompiler.cs
- WebPartUtil.cs
- XmlSchemaProviderAttribute.cs
- Dispatcher.cs
- CriticalHandle.cs
- Camera.cs
- MetadataSet.cs
- PointLight.cs
- ArithmeticException.cs
- NativeObjectSecurity.cs
- DropDownButton.cs
- TextFormatterContext.cs
- StyleSheetRefUrlEditor.cs
- SslStreamSecurityBindingElement.cs
- ResumeStoryboard.cs
- LoginName.cs
- __Filters.cs
- OAVariantLib.cs
- LayoutInformation.cs
- NGCSerializationManager.cs
- figurelengthconverter.cs
- MultilineStringConverter.cs
- RuntimeArgumentHandle.cs
- FileSystemEventArgs.cs
- PageSetupDialog.cs
- DesignerDataParameter.cs
- oledbmetadatacollectionnames.cs
- DbConnectionOptions.cs
- XamlFigureLengthSerializer.cs
- XPathAxisIterator.cs
- HttpConfigurationContext.cs
- HebrewCalendar.cs
- TextParaLineResult.cs
- FrameworkTextComposition.cs
- FixedHighlight.cs
- PeerNearMe.cs
- WindowsSecurityToken.cs
- SecurityUtils.cs
- GenericUriParser.cs
- CodeValidator.cs
- ClientType.cs
- ExternalCalls.cs
- ControlTemplate.cs
- UInt32Storage.cs
- MimeXmlImporter.cs
- PagesSection.cs
- SymbolDocumentInfo.cs
- UnitySerializationHolder.cs
- UpDownBase.cs
- SettingsPropertyValue.cs
- TypeBinaryExpression.cs
- XmlToDatasetMap.cs
- BuildProvidersCompiler.cs
- ExtendedProperty.cs
- ToolStripGripRenderEventArgs.cs
- SystemIPInterfaceProperties.cs
- URL.cs
- DataColumnMapping.cs
- XamlRtfConverter.cs
- UpDownEvent.cs
- DesignerOptionService.cs
- COMException.cs
- RuleInfoComparer.cs
- DatatypeImplementation.cs
- DomainLiteralReader.cs
- EpmCustomContentSerializer.cs
- PixelShader.cs
- AnnotationAuthorChangedEventArgs.cs
- ExtendedPropertyCollection.cs
- Convert.cs
- DataSourceNameHandler.cs
- AcceleratedTokenProviderState.cs
- ListViewDeleteEventArgs.cs
- ListItemConverter.cs
- HostExecutionContextManager.cs
- GlobalProxySelection.cs
- XmlSchemaChoice.cs
- WindowsSolidBrush.cs
- PolyLineSegmentFigureLogic.cs
- XsdBuildProvider.cs
- DataSourceCache.cs
- RawStylusSystemGestureInputReport.cs
- StickyNoteHelper.cs
- FactoryGenerator.cs
- ObjectDisposedException.cs
- DummyDataSource.cs
- LinkedList.cs
- PointCollection.cs
- CodeGenerator.cs
- HtmlEncodedRawTextWriter.cs
- LinkConverter.cs
- OdbcPermission.cs
- InternalBufferOverflowException.cs
- PrintDialog.cs
- WebPartConnectionsDisconnectVerb.cs
- WeakReadOnlyCollection.cs
- ServiceBehaviorElement.cs
- WinInetCache.cs
- NumberFormatInfo.cs