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
- SqlCommandSet.cs
- PageFunction.cs
- BackgroundWorker.cs
- mediaeventargs.cs
- SymbolMethod.cs
- DetailsViewCommandEventArgs.cs
- WebBrowsableAttribute.cs
- NGCUIElementCollectionSerializerAsync.cs
- HiddenField.cs
- CompositeScriptReference.cs
- MimeImporter.cs
- XmlConvert.cs
- GridViewUpdatedEventArgs.cs
- SessionStateModule.cs
- UnionExpr.cs
- FlagPanel.cs
- DataColumn.cs
- ErrorItem.cs
- Win32.cs
- XNodeNavigator.cs
- Stack.cs
- MarkupProperty.cs
- SafeNativeMethodsMilCoreApi.cs
- LabelDesigner.cs
- XPathMultyIterator.cs
- ManagedCodeMarkers.cs
- IdentityHolder.cs
- SafeLocalAllocation.cs
- PersonalizablePropertyEntry.cs
- HighContrastHelper.cs
- KeyedCollection.cs
- ToolStripContentPanelRenderEventArgs.cs
- TaskHelper.cs
- ColumnResizeUndoUnit.cs
- BulletedListEventArgs.cs
- TypePropertyEditor.cs
- ResourceAttributes.cs
- DBConnectionString.cs
- BitmapEffectGeneralTransform.cs
- PersonalizableTypeEntry.cs
- Filter.cs
- QilNode.cs
- SessionStateModule.cs
- OdbcEnvironmentHandle.cs
- SharedDp.cs
- AsyncCompletedEventArgs.cs
- PngBitmapEncoder.cs
- autovalidator.cs
- DbDeleteCommandTree.cs
- PartialTrustHelpers.cs
- HttpGetProtocolImporter.cs
- SiteMapPathDesigner.cs
- CodeLinePragma.cs
- DbMetaDataCollectionNames.cs
- UTF32Encoding.cs
- MbpInfo.cs
- KeyGesture.cs
- _SslState.cs
- OpenTypeLayout.cs
- cookiecollection.cs
- MainMenu.cs
- WindowsHyperlink.cs
- FileUtil.cs
- EntityClassGenerator.cs
- Selection.cs
- PlatformNotSupportedException.cs
- HtmlTableCellCollection.cs
- PrintEvent.cs
- Rotation3DKeyFrameCollection.cs
- EncryptedData.cs
- GridView.cs
- DataGridCellsPanel.cs
- WindowInteropHelper.cs
- DesignerDataParameter.cs
- DeclarationUpdate.cs
- ISFTagAndGuidCache.cs
- FocusChangedEventArgs.cs
- PackageRelationshipSelector.cs
- RelationshipEndCollection.cs
- KnownTypes.cs
- UidManager.cs
- VectorCollection.cs
- EndEvent.cs
- SqlMethodAttribute.cs
- ExpandedWrapper.cs
- XNodeValidator.cs
- CharAnimationBase.cs
- SerializationFieldInfo.cs
- XmlSerializerSection.cs
- SortedSetDebugView.cs
- QilInvoke.cs
- Queue.cs
- EnterpriseServicesHelper.cs
- BindingListCollectionView.cs
- AnnotationComponentChooser.cs
- ChildDocumentBlock.cs
- CodeSubDirectoriesCollection.cs
- DiffuseMaterial.cs
- WebPartEditVerb.cs
- XmlSchemaExternal.cs