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
- panel.cs
- MessageDesigner.cs
- MetadataCache.cs
- InputQueueChannel.cs
- GifBitmapDecoder.cs
- PinnedBufferMemoryStream.cs
- NameValueFileSectionHandler.cs
- TreeViewDesigner.cs
- Dictionary.cs
- SmiMetaDataProperty.cs
- IIS7WorkerRequest.cs
- FontStretchConverter.cs
- SqlError.cs
- FixedTextContainer.cs
- GetChildSubtree.cs
- EmptyReadOnlyDictionaryInternal.cs
- UICuesEvent.cs
- EllipticalNodeOperations.cs
- CodeSnippetTypeMember.cs
- AdvancedBindingEditor.cs
- ResXResourceWriter.cs
- ActivityInfo.cs
- SiteMapNodeItem.cs
- CompilerScope.Storage.cs
- PeerNameResolver.cs
- DbConnectionClosed.cs
- SubMenuStyle.cs
- ConnectionInterfaceCollection.cs
- Converter.cs
- ping.cs
- GestureRecognitionResult.cs
- BitArray.cs
- DataBoundControl.cs
- WindowsIPAddress.cs
- GridViewUpdatedEventArgs.cs
- DownloadProgressEventArgs.cs
- FormsAuthenticationUser.cs
- ProtectedProviderSettings.cs
- DocumentPageHost.cs
- UInt64.cs
- LambdaCompiler.Unary.cs
- UInt32Storage.cs
- HttpStreamMessage.cs
- DateTimeOffsetConverter.cs
- SqlBooleanizer.cs
- RenderData.cs
- DeferrableContentConverter.cs
- LineSegment.cs
- Transform.cs
- LockedAssemblyCache.cs
- NativeMethods.cs
- UserControlCodeDomTreeGenerator.cs
- RichListBox.cs
- Registry.cs
- EDesignUtil.cs
- ExplicitDiscriminatorMap.cs
- NetworkInterface.cs
- wgx_exports.cs
- SqlClientPermission.cs
- PerfCounterSection.cs
- Soap.cs
- RowType.cs
- CustomErrorsSection.cs
- QilPatternFactory.cs
- Polygon.cs
- BitmapScalingModeValidation.cs
- TableLayoutPanelCellPosition.cs
- NumericUpDownAccelerationCollection.cs
- GeometryCollection.cs
- SecurityState.cs
- PrivacyNoticeBindingElementImporter.cs
- ServiceProviders.cs
- AttributeQuery.cs
- LineBreak.cs
- IndicCharClassifier.cs
- PackageProperties.cs
- RequestSecurityTokenForGetBrowserToken.cs
- UnsafeNativeMethods.cs
- Object.cs
- HttpProcessUtility.cs
- Blend.cs
- sqlmetadatafactory.cs
- DataGridViewCellCollection.cs
- Vector3D.cs
- DocumentSchemaValidator.cs
- EditBehavior.cs
- QueryOutputWriter.cs
- MenuItem.cs
- OdbcPermission.cs
- DrawingAttributes.cs
- SystemEvents.cs
- Simplifier.cs
- GridViewDeletedEventArgs.cs
- ServicePointManager.cs
- GlobalAllocSafeHandle.cs
- AlignmentXValidation.cs
- ProxyAttribute.cs
- __ComObject.cs
- TransactedBatchingBehavior.cs
- StringPropertyBuilder.cs