Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- WebHttpDispatchOperationSelector.cs
- FontStyle.cs
- ConsoleTraceListener.cs
- DataSourceControl.cs
- CodeLinePragma.cs
- MessagePropertyAttribute.cs
- RequestCachePolicyConverter.cs
- XsltQilFactory.cs
- MultipartIdentifier.cs
- Perspective.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- DependentTransaction.cs
- PaperSource.cs
- XmlnsPrefixAttribute.cs
- ResizeGrip.cs
- TextLineResult.cs
- Calendar.cs
- OrderPreservingPipeliningSpoolingTask.cs
- DataViewSetting.cs
- ItemsControl.cs
- FirstMatchCodeGroup.cs
- ConfigXmlElement.cs
- TypeViewSchema.cs
- ZeroOpNode.cs
- InlinedLocationReference.cs
- MouseCaptureWithinProperty.cs
- AssociationSetEnd.cs
- Tokenizer.cs
- SqlRewriteScalarSubqueries.cs
- HostUtils.cs
- ConnectionConsumerAttribute.cs
- StructuralObject.cs
- HttpHandlerActionCollection.cs
- ListBoxItem.cs
- Geometry.cs
- ImageSourceConverter.cs
- PasswordPropertyTextAttribute.cs
- OletxCommittableTransaction.cs
- RankException.cs
- MembershipUser.cs
- FontInfo.cs
- QilLoop.cs
- SocketException.cs
- CqlBlock.cs
- Pkcs9Attribute.cs
- BufferModeSettings.cs
- XmlStringTable.cs
- Vector3DCollection.cs
- UnauthorizedAccessException.cs
- InitializerFacet.cs
- HyperLinkField.cs
- ScriptManager.cs
- DbReferenceCollection.cs
- CodeSpit.cs
- ResourceBinder.cs
- BamlLocalizableResourceKey.cs
- LingerOption.cs
- WindowsAuthenticationEventArgs.cs
- ColorContext.cs
- PropertyIdentifier.cs
- BrowserDefinitionCollection.cs
- QueueSurrogate.cs
- PostBackTrigger.cs
- RequestCacheManager.cs
- BasicHttpBinding.cs
- StateMachineSubscriptionManager.cs
- ILGenerator.cs
- ReliableSession.cs
- SimpleApplicationHost.cs
- HtmlButton.cs
- SingleConverter.cs
- SmtpSection.cs
- CodeCatchClauseCollection.cs
- PropertyConverter.cs
- AssemblyBuilder.cs
- SoapExtensionTypeElementCollection.cs
- ipaddressinformationcollection.cs
- InvalidWMPVersionException.cs
- DelegatingChannelListener.cs
- HashMembershipCondition.cs
- recordstatescratchpad.cs
- CodeAssignStatement.cs
- MatrixCamera.cs
- AspNetHostingPermission.cs
- BuiltInExpr.cs
- SqlComparer.cs
- Emitter.cs
- DocumentPageTextView.cs
- DefaultPrintController.cs
- DbgCompiler.cs
- IRCollection.cs
- LinqDataSourceInsertEventArgs.cs
- PackageRelationshipCollection.cs
- MouseGesture.cs
- GroupItemAutomationPeer.cs
- EntityParameter.cs
- DesignerActionVerbList.cs
- CachedCompositeFamily.cs
- MultiDataTrigger.cs
- SmtpSpecifiedPickupDirectoryElement.cs