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
- Cloud.cs
- ConfigurationValidatorAttribute.cs
- ServiceContractAttribute.cs
- ResponseStream.cs
- BrowserDefinitionCollection.cs
- WinFormsComponentEditor.cs
- GridViewCancelEditEventArgs.cs
- HideDisabledControlAdapter.cs
- WindowsToolbarItemAsMenuItem.cs
- Pen.cs
- BidirectionalDictionary.cs
- SystemException.cs
- CodeTypeOfExpression.cs
- EmissiveMaterial.cs
- XmlNamespaceMapping.cs
- SafeNativeMethods.cs
- WebPartEditorApplyVerb.cs
- HtmlElementCollection.cs
- DefaultTextStore.cs
- StylusPointCollection.cs
- GridEntryCollection.cs
- EntityTypeBase.cs
- Pair.cs
- OleStrCAMarshaler.cs
- ScriptingAuthenticationServiceSection.cs
- FormViewRow.cs
- SortKey.cs
- CultureMapper.cs
- ImageButton.cs
- TypeDescriptionProviderAttribute.cs
- PlainXmlDeserializer.cs
- ColorTranslator.cs
- SQLRoleProvider.cs
- RevocationPoint.cs
- PackWebRequestFactory.cs
- ElementUtil.cs
- LocalFileSettingsProvider.cs
- login.cs
- HotSpotCollection.cs
- DbProviderFactoriesConfigurationHandler.cs
- HttpListener.cs
- _Events.cs
- SeparatorAutomationPeer.cs
- DataGridCell.cs
- MultiAsyncResult.cs
- BigInt.cs
- InternalRelationshipCollection.cs
- IisTraceListener.cs
- StyleXamlParser.cs
- NameValuePair.cs
- GeometryGroup.cs
- ContextQuery.cs
- IQueryable.cs
- SAPICategories.cs
- DataSourceControl.cs
- Types.cs
- SchemaMapping.cs
- RTLAwareMessageBox.cs
- EnumConverter.cs
- ToolStripSplitStackLayout.cs
- DataColumn.cs
- DbModificationCommandTree.cs
- PersonalizationState.cs
- Control.cs
- AssemblyAttributesGoHere.cs
- RequestQueryProcessor.cs
- PathHelper.cs
- Converter.cs
- ChannelFactoryBase.cs
- DbParameterCollection.cs
- ObjectDataSourceFilteringEventArgs.cs
- LabelDesigner.cs
- OrthographicCamera.cs
- CursorConverter.cs
- EditorPart.cs
- _ListenerResponseStream.cs
- ServiceMetadataContractBehavior.cs
- XmlSchemaFacet.cs
- documentation.cs
- InstanceDataCollection.cs
- DocumentOrderQuery.cs
- RequestUriProcessor.cs
- ViewCellRelation.cs
- DataBindEngine.cs
- SmtpAuthenticationManager.cs
- ConfigurationManagerHelperFactory.cs
- CollectionBase.cs
- ExeContext.cs
- ServiceMemoryGates.cs
- HandlerElementCollection.cs
- JournalEntryListConverter.cs
- Calendar.cs
- SmtpDigestAuthenticationModule.cs
- CompoundFileReference.cs
- PersistenceTypeAttribute.cs
- TrackingProfileManager.cs
- WhitespaceRule.cs
- __Error.cs
- DecoderReplacementFallback.cs
- WindowsEditBox.cs