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
- ChooseAction.cs
- XmlText.cs
- StateMachine.cs
- LicenseContext.cs
- CroppedBitmap.cs
- ResolveMatchesMessageCD1.cs
- ContentPosition.cs
- DirectoryRedirect.cs
- UnicodeEncoding.cs
- BooleanKeyFrameCollection.cs
- XsltException.cs
- NotImplementedException.cs
- ElementMarkupObject.cs
- DefaultBindingPropertyAttribute.cs
- PolyBezierSegmentFigureLogic.cs
- ParenExpr.cs
- TimersDescriptionAttribute.cs
- RbTree.cs
- LogicalTreeHelper.cs
- SqlTypeSystemProvider.cs
- JoinCqlBlock.cs
- DataObjectMethodAttribute.cs
- PackagePartCollection.cs
- HostedTcpTransportManager.cs
- StrokeCollectionDefaultValueFactory.cs
- DeploymentSection.cs
- BamlBinaryReader.cs
- TextCollapsingProperties.cs
- EmptyImpersonationContext.cs
- HitTestFilterBehavior.cs
- StringUtil.cs
- GridItemPattern.cs
- SmiEventStream.cs
- BulletDecorator.cs
- SemanticBasicElement.cs
- TypefaceMetricsCache.cs
- EditCommandColumn.cs
- DefaultTextStoreTextComposition.cs
- TextChangedEventArgs.cs
- Separator.cs
- GridSplitterAutomationPeer.cs
- EnumConverter.cs
- HttpApplicationFactory.cs
- Brush.cs
- DescendantBaseQuery.cs
- EdmSchemaAttribute.cs
- SoapElementAttribute.cs
- FileSystemWatcher.cs
- TextEndOfParagraph.cs
- ObjectStateEntryDbDataRecord.cs
- ValidatingPropertiesEventArgs.cs
- XmlElement.cs
- CellConstantDomain.cs
- DataServiceQueryContinuation.cs
- Array.cs
- VectorCollectionConverter.cs
- DtrList.cs
- RedirectionProxy.cs
- AdapterSwitches.cs
- SqlFlattener.cs
- NetTcpBindingElement.cs
- InvalidPropValue.cs
- ContentElement.cs
- CutCopyPasteHelper.cs
- PersonalizationStateInfoCollection.cs
- MergePropertyDescriptor.cs
- QilScopedVisitor.cs
- OpenFileDialog.cs
- AutomationProperty.cs
- FragmentNavigationEventArgs.cs
- EdmValidator.cs
- SoapInteropTypes.cs
- StylusShape.cs
- PaintValueEventArgs.cs
- BackStopAuthenticationModule.cs
- GradientBrush.cs
- SqlCommandBuilder.cs
- DesigntimeLicenseContextSerializer.cs
- EncoderNLS.cs
- ReflectionTypeLoadException.cs
- MobileControlPersister.cs
- WriteableBitmap.cs
- CmsInterop.cs
- ColorTranslator.cs
- EdmComplexTypeAttribute.cs
- BaseDataBoundControlDesigner.cs
- EditorZone.cs
- SecureStringHasher.cs
- IteratorDescriptor.cs
- DataRow.cs
- RotationValidation.cs
- BaseCollection.cs
- PipelineComponent.cs
- SmiEventStream.cs
- InputProcessorProfiles.cs
- DSGeneratorProblem.cs
- ArrayTypeMismatchException.cs
- FileUtil.cs
- XPathExpr.cs
- BulletChrome.cs