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
- RuleSetBrowserDialog.cs
- BlockCollection.cs
- RequestDescription.cs
- GridViewColumn.cs
- CubicEase.cs
- ClockGroup.cs
- DocumentApplication.cs
- ButtonRenderer.cs
- AssignDesigner.xaml.cs
- FloaterBaseParaClient.cs
- XmlC14NWriter.cs
- X509CertificateCollection.cs
- SqlInfoMessageEvent.cs
- ArgumentsParser.cs
- HttpListenerResponse.cs
- HttpProtocolReflector.cs
- PluralizationService.cs
- FixedPosition.cs
- PaperSource.cs
- QuadTree.cs
- SqlBuffer.cs
- WebZoneDesigner.cs
- WindowsStartMenu.cs
- GenericNameHandler.cs
- StrongNameKeyPair.cs
- CustomErrorsSectionWrapper.cs
- DesigntimeLicenseContextSerializer.cs
- RoleService.cs
- ExtendedProtectionPolicy.cs
- XsdBuildProvider.cs
- TrustLevel.cs
- LabelAutomationPeer.cs
- NumericPagerField.cs
- _UriSyntax.cs
- HttpListenerResponse.cs
- SqlCharStream.cs
- ExclusiveTcpListener.cs
- DataTableExtensions.cs
- webproxy.cs
- EncoderReplacementFallback.cs
- SqlBulkCopyColumnMappingCollection.cs
- FormViewDeletedEventArgs.cs
- ScrollChrome.cs
- DependencyObjectPropertyDescriptor.cs
- Condition.cs
- Expander.cs
- Highlights.cs
- DatePickerAutomationPeer.cs
- Triplet.cs
- SecurityUtils.cs
- DbDataRecord.cs
- Line.cs
- RowBinding.cs
- RTLAwareMessageBox.cs
- DateTimeFormatInfoScanner.cs
- AliasGenerator.cs
- GridPatternIdentifiers.cs
- CacheChildrenQuery.cs
- MultiDataTrigger.cs
- ServiceChannelManager.cs
- GraphicsPath.cs
- MessageHeaderT.cs
- Model3DGroup.cs
- CSharpCodeProvider.cs
- GeometryGroup.cs
- Polygon.cs
- CommandDevice.cs
- MULTI_QI.cs
- ExpressionEditorAttribute.cs
- HashSet.cs
- DependencyStoreSurrogate.cs
- ObjectConverter.cs
- XmlTypeAttribute.cs
- WebPartDisplayModeEventArgs.cs
- DataBoundControlHelper.cs
- WebPermission.cs
- ExpressionValueEditor.cs
- DesignerSerializationVisibilityAttribute.cs
- WebExceptionStatus.cs
- KeyedHashAlgorithm.cs
- ContourSegment.cs
- Resources.Designer.cs
- HttpServerChannel.cs
- SimpleType.cs
- TemplateControlCodeDomTreeGenerator.cs
- CodeMethodInvokeExpression.cs
- MenuAdapter.cs
- XmlWellformedWriter.cs
- AddToCollection.cs
- SqlCharStream.cs
- DataControlFieldCell.cs
- EntityDataSourceDesigner.cs
- ToolStripPanelRow.cs
- dbdatarecord.cs
- LocatorBase.cs
- ArrayList.cs
- OdbcPermission.cs
- ManagementOperationWatcher.cs
- BrowserCapabilitiesCompiler.cs
- ChameleonKey.cs