Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- Positioning.cs
- MsmqIntegrationSecurityMode.cs
- ActivityCodeGenerator.cs
- LocalBuilder.cs
- BreadCrumbTextConverter.cs
- ListViewUpdateEventArgs.cs
- SessionParameter.cs
- InvalidPrinterException.cs
- WebPartZoneCollection.cs
- SessionState.cs
- WindowsBrush.cs
- AttachedProperty.cs
- TimeSpanValidatorAttribute.cs
- SmiSettersStream.cs
- FontCollection.cs
- XmlUrlResolver.cs
- ValueOfAction.cs
- GridViewDeleteEventArgs.cs
- XmlSchemaInferenceException.cs
- Brush.cs
- ToolStripDropDownMenu.cs
- HttpProxyCredentialType.cs
- StringSource.cs
- OutputCacheProfile.cs
- BuildProvider.cs
- ConnectionOrientedTransportBindingElement.cs
- AndCondition.cs
- XpsViewerException.cs
- GetPageCompletedEventArgs.cs
- WindowsSecurityToken.cs
- ZoneButton.cs
- DPCustomTypeDescriptor.cs
- _SslState.cs
- TextTreeInsertElementUndoUnit.cs
- RuleSetCollection.cs
- SqlClientMetaDataCollectionNames.cs
- VScrollBar.cs
- WebSysDescriptionAttribute.cs
- SmiMetaData.cs
- EntityProviderFactory.cs
- GeneralTransform3DTo2DTo3D.cs
- TransformCollection.cs
- UrlPropertyAttribute.cs
- ListSortDescription.cs
- CombinedGeometry.cs
- BinaryObjectReader.cs
- RightNameExpirationInfoPair.cs
- ConnectivityStatus.cs
- RichTextBoxConstants.cs
- DiagnosticTraceRecords.cs
- OrCondition.cs
- ParsedRoute.cs
- MenuItemStyle.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- TextLineBreak.cs
- ScriptDescriptor.cs
- DiscoveryClientDocuments.cs
- CodeValidator.cs
- CodeComment.cs
- TransactionValidationBehavior.cs
- ApplyTemplatesAction.cs
- ConfigurationLocationCollection.cs
- ClientProtocol.cs
- AttributeUsageAttribute.cs
- LocalizationParserHooks.cs
- SqlConnectionHelper.cs
- NaturalLanguageHyphenator.cs
- FrameDimension.cs
- ModelProperty.cs
- HttpCapabilitiesSectionHandler.cs
- ConstraintCollection.cs
- GlobalProxySelection.cs
- AudioSignalProblemOccurredEventArgs.cs
- DataService.cs
- ManageRequest.cs
- SecurityTokenRequirement.cs
- Int16Storage.cs
- DbDataSourceEnumerator.cs
- StylusCollection.cs
- WebPartCatalogAddVerb.cs
- LayoutDump.cs
- EventTrigger.cs
- InputLanguageSource.cs
- SaveFileDialog.cs
- Transform3DGroup.cs
- XmlWriterDelegator.cs
- DataGridViewColumn.cs
- ValidationResult.cs
- RoleManagerSection.cs
- EmbossBitmapEffect.cs
- UndoEngine.cs
- CapabilitiesUse.cs
- TemplateBamlTreeBuilder.cs
- IUnknownConstantAttribute.cs
- RegexStringValidator.cs
- UserPreferenceChangedEventArgs.cs
- DocumentOrderComparer.cs
- GeneratedContractType.cs
- COM2Enum.cs
- Int32.cs