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.
///
/// Sets
internal 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, IEnumerable modifiedProperties)
{
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, IEnumerable modifiedProperties)
{
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.
///
/// Sets
internal 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, IEnumerable modifiedProperties)
{
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, IEnumerable modifiedProperties)
{
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
- Delegate.cs
- uribuilder.cs
- KeyValuePairs.cs
- TypeCollectionDesigner.xaml.cs
- SqlCrossApplyToCrossJoin.cs
- HtmlTableCellCollection.cs
- Comparer.cs
- DataGridViewCellValidatingEventArgs.cs
- InputQueue.cs
- ResourceAttributes.cs
- ModuleElement.cs
- DataViewSettingCollection.cs
- MobileControlsSection.cs
- PropertyChangedEventManager.cs
- SectionVisual.cs
- XsdBuilder.cs
- ProgressBarAutomationPeer.cs
- WebPartMenu.cs
- StrongNameKeyPair.cs
- ToolStripSettings.cs
- BindingBase.cs
- XmlReturnReader.cs
- Parallel.cs
- IgnoreSectionHandler.cs
- ImmutablePropertyDescriptorGridEntry.cs
- TextCharacters.cs
- CqlParser.cs
- ToolCreatedEventArgs.cs
- Group.cs
- TextProperties.cs
- MessageSecurityTokenVersion.cs
- PDBReader.cs
- BitStack.cs
- SemaphoreFullException.cs
- CryptoApi.cs
- UnknownWrapper.cs
- DefaultPrintController.cs
- LocalFileSettingsProvider.cs
- GridViewDesigner.cs
- __ComObject.cs
- ProvidePropertyAttribute.cs
- RuntimeCompatibilityAttribute.cs
- DataGridItem.cs
- TrackPoint.cs
- DesigntimeLicenseContextSerializer.cs
- SerializationSectionGroup.cs
- PageParserFilter.cs
- ThaiBuddhistCalendar.cs
- TdsParserSafeHandles.cs
- GeneralTransform3DCollection.cs
- webproxy.cs
- ObjectRef.cs
- ObjectReaderCompiler.cs
- RegionInfo.cs
- DiscreteKeyFrames.cs
- EntityContainerEmitter.cs
- DrawingImage.cs
- Internal.cs
- ObjectSecurity.cs
- WrappingXamlSchemaContext.cs
- typedescriptorpermission.cs
- DirectionalLight.cs
- __ComObject.cs
- VisualTreeUtils.cs
- Viewport2DVisual3D.cs
- ReadOnlyCollectionBase.cs
- SqlConnectionPoolProviderInfo.cs
- PostBackTrigger.cs
- ToolStripDropDownItem.cs
- TimeZoneNotFoundException.cs
- NetworkStream.cs
- StandardOleMarshalObject.cs
- controlskin.cs
- RegexBoyerMoore.cs
- QuaternionIndependentAnimationStorage.cs
- wgx_render.cs
- BindingCollection.cs
- ObjectDataSourceStatusEventArgs.cs
- ListControl.cs
- FamilyMap.cs
- FlowDocumentReaderAutomationPeer.cs
- PublisherIdentityPermission.cs
- Propagator.JoinPropagator.cs
- KeyFrames.cs
- ButtonRenderer.cs
- TextEndOfSegment.cs
- AvTraceFormat.cs
- EnvironmentPermission.cs
- DesignerVerbCollection.cs
- View.cs
- TransactionManager.cs
- StaticSiteMapProvider.cs
- MediaTimeline.cs
- NavigationService.cs
- OutputCacheProfile.cs
- _ProxyRegBlob.cs
- BlurBitmapEffect.cs
- WizardStepCollectionEditor.cs
- PropertyEmitter.cs
- RegisteredArrayDeclaration.cs