Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / Update / Internal / RecordConverter.cs / 1305376 / 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. /// Indicates how to determine whether a property is modified. ///New instance expression. internal PropagatorResult ConvertOriginalValuesToPropagatorResult(IEntityStateEntry stateEntry, ModifiedPropertiesBehavior modifiedPropertiesBehavior) { return ConvertStateEntryToPropagatorResult(stateEntry, useCurrentValues: false, modifiedPropertiesBehavior: modifiedPropertiesBehavior); } ////// 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. /// Indicates how to determine whether a property is modified. ///New instance expression. internal PropagatorResult ConvertCurrentValuesToPropagatorResult(IEntityStateEntry stateEntry, ModifiedPropertiesBehavior modifiedPropertiesBehavior) { return ConvertStateEntryToPropagatorResult(stateEntry, useCurrentValues: true, modifiedPropertiesBehavior: modifiedPropertiesBehavior); } private PropagatorResult ConvertStateEntryToPropagatorResult(IEntityStateEntry stateEntry, bool useCurrentValues, ModifiedPropertiesBehavior modifiedPropertiesBehavior) { try { EntityUtil.CheckArgumentNull(stateEntry, "stateEntry"); IExtendedDataRecord record = useCurrentValues ? EntityUtil.CheckArgumentNull(stateEntry.CurrentValues as IExtendedDataRecord, "stateEntry.CurrentValues") : EntityUtil.CheckArgumentNull(stateEntry.OriginalValues as IExtendedDataRecord, "stateEntry.OriginalValues"); bool isModified = false; // the root of the state entry is unchanged because the type is static return ExtractorMetadata.ExtractResultFromRecord(stateEntry, isModified, record, useCurrentValues, m_updateTranslator, modifiedPropertiesBehavior); } 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
- Journaling.cs
- APCustomTypeDescriptor.cs
- TextFormatterContext.cs
- XMLSyntaxException.cs
- WebPartDesigner.cs
- Clock.cs
- XmlSerializerNamespaces.cs
- ChineseLunisolarCalendar.cs
- Label.cs
- RSAPKCS1KeyExchangeFormatter.cs
- TextDecorationLocationValidation.cs
- CommandHelper.cs
- HttpWebResponse.cs
- ConfigurationValue.cs
- XmlReflectionMember.cs
- NativeWindow.cs
- ChangeTracker.cs
- SqlGenerator.cs
- SoapExtensionStream.cs
- KeyTimeConverter.cs
- ProviderSettingsCollection.cs
- PenThreadPool.cs
- LongValidator.cs
- SystemMulticastIPAddressInformation.cs
- ConfigXmlReader.cs
- ReadOnlyDictionary.cs
- XmlDataSourceNodeDescriptor.cs
- SingleTagSectionHandler.cs
- DirectoryNotFoundException.cs
- ConfigXmlElement.cs
- StringExpressionSet.cs
- ADRoleFactory.cs
- ExceptionUtil.cs
- panel.cs
- DispatchChannelSink.cs
- WpfMemberInvoker.cs
- XmlNodeChangedEventArgs.cs
- Unit.cs
- ConfigXmlComment.cs
- InheritanceAttribute.cs
- NotFiniteNumberException.cs
- MulticastDelegate.cs
- SqlException.cs
- ChannelPool.cs
- ObjectDataProvider.cs
- Point3DAnimationBase.cs
- SafeEventLogWriteHandle.cs
- SqlBuilder.cs
- Comparer.cs
- EditCommandColumn.cs
- ThousandthOfEmRealPoints.cs
- SqlCommandSet.cs
- DataGridBeginningEditEventArgs.cs
- UnsafeNativeMethods.cs
- ReaderWriterLockSlim.cs
- ChannelRequirements.cs
- StringInfo.cs
- CodeComment.cs
- SessionIDManager.cs
- CharStorage.cs
- ColumnTypeConverter.cs
- XamlInt32CollectionSerializer.cs
- DataGridItemAutomationPeer.cs
- CodeNamespaceImportCollection.cs
- WebPartCatalogCloseVerb.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- PriorityBindingExpression.cs
- Bits.cs
- EncryptedType.cs
- SecurityState.cs
- TraceHwndHost.cs
- UpdateProgress.cs
- ConnectionsZone.cs
- RegistryExceptionHelper.cs
- Perspective.cs
- ParserExtension.cs
- ApplicationSecurityInfo.cs
- IsolatedStorageFilePermission.cs
- Verify.cs
- MachineSettingsSection.cs
- StreamMarshaler.cs
- StreamGeometry.cs
- ApplicationManager.cs
- StyleXamlTreeBuilder.cs
- RequestTimeoutManager.cs
- XmlRawWriter.cs
- ConnectionStringsExpressionBuilder.cs
- IndexObject.cs
- BamlRecordWriter.cs
- SqlDataSourceStatusEventArgs.cs
- BaseProcessor.cs
- Line.cs
- SignatureToken.cs
- UnsignedPublishLicense.cs
- FloaterParagraph.cs
- StrokeNodeOperations2.cs
- MethodBuilderInstantiation.cs
- CheckBox.cs
- MsmqNonTransactedPoisonHandler.cs
- DataObjectAttribute.cs