Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Map / Update / Internal / RecordConverter.cs / 1 / 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
- ConfigurationElementProperty.cs
- Char.cs
- TextRenderer.cs
- LoginCancelEventArgs.cs
- DockingAttribute.cs
- GradientStop.cs
- SrgsElementFactoryCompiler.cs
- Accessible.cs
- StateManagedCollection.cs
- DropShadowBitmapEffect.cs
- LayoutSettings.cs
- TransformPatternIdentifiers.cs
- XmlUtil.cs
- SingleAnimationUsingKeyFrames.cs
- CompiledIdentityConstraint.cs
- RuntimeConfigLKG.cs
- VoiceChangeEventArgs.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- EffectiveValueEntry.cs
- unitconverter.cs
- OleDbPermission.cs
- SessionStateUtil.cs
- RepeatBehavior.cs
- CultureTableRecord.cs
- ModelPerspective.cs
- SchemaImporter.cs
- AsymmetricAlgorithm.cs
- EnterpriseServicesHelper.cs
- ResourceWriter.cs
- CodeTypeDelegate.cs
- BindingsCollection.cs
- TableItemStyle.cs
- PolyLineSegment.cs
- IndentedWriter.cs
- DbgUtil.cs
- SimpleRecyclingCache.cs
- WpfPayload.cs
- hwndwrapper.cs
- BufferedGraphicsContext.cs
- CommandEventArgs.cs
- DoubleAnimationClockResource.cs
- Formatter.cs
- ApplicationSecurityManager.cs
- XmlMemberMapping.cs
- FileSecurity.cs
- DispatchWrapper.cs
- AnnotationComponentChooser.cs
- ToolStripButton.cs
- InputProcessorProfilesLoader.cs
- DataGridCellClipboardEventArgs.cs
- ConcurrencyMode.cs
- ComponentSerializationService.cs
- UriExt.cs
- _FtpDataStream.cs
- DataSvcMapFile.cs
- NavigationWindow.cs
- TimeSpanStorage.cs
- DataTableCollection.cs
- AppDomainProtocolHandler.cs
- LiteralControl.cs
- Queue.cs
- PKCS1MaskGenerationMethod.cs
- LOSFormatter.cs
- ParallelRangeManager.cs
- ObjRef.cs
- TreeNode.cs
- DecimalAverageAggregationOperator.cs
- EnvelopedPkcs7.cs
- SqlBuffer.cs
- TableProviderWrapper.cs
- ToolStripRendererSwitcher.cs
- PropertyItemInternal.cs
- UniqueEventHelper.cs
- DateTimeFormat.cs
- WebPartZone.cs
- _HelperAsyncResults.cs
- Brush.cs
- ClonableStack.cs
- MenuItemStyleCollection.cs
- Latin1Encoding.cs
- ScrollBar.cs
- CompiledRegexRunnerFactory.cs
- FileEnumerator.cs
- HwndHost.cs
- WebCategoryAttribute.cs
- AppearanceEditorPart.cs
- CollectionsUtil.cs
- EntityDataSourceChangingEventArgs.cs
- StateWorkerRequest.cs
- ReferenceCountedObject.cs
- TypeBuilderInstantiation.cs
- DataGridAddNewRow.cs
- GAC.cs
- HttpCookiesSection.cs
- Buffer.cs
- ExecutedRoutedEventArgs.cs
- ObjectSet.cs
- GeneralTransform3D.cs
- XmlnsDictionary.cs
- _SafeNetHandles.cs