Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataWeb / Client / System / Data / Services / Client / ALinq / NavigationPropertySingletonExpression.cs / 1305376 / NavigationPropertySingletonExpression.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Respresents a navigation to a singleton property.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Client
{
#region Private fields.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Linq.Expressions;
#endregion Private fields.
/// Expression for a navigation property into a single entity (eg: Customer.BestFriend).
internal class NavigationPropertySingletonExpression : ResourceExpression
{
#region Private fields.
/// property member name
private readonly Expression memberExpression;
/// resource type
private readonly Type resourceType;
#endregion Private fields.
///
/// Creates a NavigationPropertySingletonExpression expression
///
/// the return type of the expression
/// the source expression
/// property member name
/// resource type for expression
/// expand paths for resource set
/// count option for the resource set
/// custom query options for resourcse set
/// projection expression
internal NavigationPropertySingletonExpression(Type type, Expression source, Expression memberExpression, Type resourceType, List expandPaths, CountOption countOption, Dictionary customQueryOptions, ProjectionQueryOptionExpression projection)
: base(source, (ExpressionType)ResourceExpressionType.ResourceNavigationPropertySingleton, type, expandPaths, countOption, customQueryOptions, projection)
{
Debug.Assert(memberExpression != null, "memberExpression != null");
Debug.Assert(resourceType != null, "resourceType != null");
this.memberExpression = memberExpression;
this.resourceType = resourceType;
}
///
/// Gets the member expression.
///
internal MemberExpression MemberExpression
{
get
{
return (MemberExpression)this.memberExpression;
}
}
///
/// The resource type of the singe instance produced by this singleton navigation.
///
internal override Type ResourceType
{
get { return this.resourceType; }
}
///
/// Singleton navigation properties always produce at most 1 result
///
internal override bool IsSingleton
{
get { return true; }
}
///
/// Does Singleton navigation have query options.
///
internal override bool HasQueryOptions
{
get
{
return this.ExpandPaths.Count > 0 ||
this.CountOption == CountOption.InlineAll ||
this.CustomQueryOptions.Count > 0 ||
this.Projection != null;
}
}
///
/// Cast changes the type of the ResourceExpression
///
/// new type
/// new NavigationPropertySingletonExpression
internal override ResourceExpression CreateCloneWithNewType(Type type)
{
return new NavigationPropertySingletonExpression(
type,
this.source,
this.MemberExpression,
TypeSystem.GetElementType(type),
this.ExpandPaths.ToList(),
this.CountOption,
this.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value),
this.Projection);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Respresents a navigation to a singleton property.
//
//
// @owner [....]
//---------------------------------------------------------------------
namespace System.Data.Services.Client
{
#region Private fields.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Linq.Expressions;
#endregion Private fields.
/// Expression for a navigation property into a single entity (eg: Customer.BestFriend).
internal class NavigationPropertySingletonExpression : ResourceExpression
{
#region Private fields.
/// property member name
private readonly Expression memberExpression;
/// resource type
private readonly Type resourceType;
#endregion Private fields.
///
/// Creates a NavigationPropertySingletonExpression expression
///
/// the return type of the expression
/// the source expression
/// property member name
/// resource type for expression
/// expand paths for resource set
/// count option for the resource set
/// custom query options for resourcse set
/// projection expression
internal NavigationPropertySingletonExpression(Type type, Expression source, Expression memberExpression, Type resourceType, List expandPaths, CountOption countOption, Dictionary customQueryOptions, ProjectionQueryOptionExpression projection)
: base(source, (ExpressionType)ResourceExpressionType.ResourceNavigationPropertySingleton, type, expandPaths, countOption, customQueryOptions, projection)
{
Debug.Assert(memberExpression != null, "memberExpression != null");
Debug.Assert(resourceType != null, "resourceType != null");
this.memberExpression = memberExpression;
this.resourceType = resourceType;
}
///
/// Gets the member expression.
///
internal MemberExpression MemberExpression
{
get
{
return (MemberExpression)this.memberExpression;
}
}
///
/// The resource type of the singe instance produced by this singleton navigation.
///
internal override Type ResourceType
{
get { return this.resourceType; }
}
///
/// Singleton navigation properties always produce at most 1 result
///
internal override bool IsSingleton
{
get { return true; }
}
///
/// Does Singleton navigation have query options.
///
internal override bool HasQueryOptions
{
get
{
return this.ExpandPaths.Count > 0 ||
this.CountOption == CountOption.InlineAll ||
this.CustomQueryOptions.Count > 0 ||
this.Projection != null;
}
}
///
/// Cast changes the type of the ResourceExpression
///
/// new type
/// new NavigationPropertySingletonExpression
internal override ResourceExpression CreateCloneWithNewType(Type type)
{
return new NavigationPropertySingletonExpression(
type,
this.source,
this.MemberExpression,
TypeSystem.GetElementType(type),
this.ExpandPaths.ToList(),
this.CountOption,
this.CustomQueryOptions.ToDictionary(kvp => kvp.Key, kvp => kvp.Value),
this.Projection);
}
}
}
// 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
- DataGridBoolColumn.cs
- SQLByte.cs
- TreeViewCancelEvent.cs
- CodeAccessPermission.cs
- LayoutTable.cs
- MaterialCollection.cs
- MeasureItemEvent.cs
- ImageField.cs
- ParamArrayAttribute.cs
- Exceptions.cs
- FontWeights.cs
- ResourceWriter.cs
- Byte.cs
- CodeEventReferenceExpression.cs
- SetterBase.cs
- RemoteWebConfigurationHostServer.cs
- Helper.cs
- HttpRequestCacheValidator.cs
- Compiler.cs
- UnhandledExceptionEventArgs.cs
- SmiGettersStream.cs
- SelectedDatesCollection.cs
- MdImport.cs
- ModelToObjectValueConverter.cs
- webclient.cs
- HttpFormatExtensions.cs
- CryptoApi.cs
- CalendarDateRange.cs
- CodeArrayCreateExpression.cs
- ItemContainerGenerator.cs
- DataList.cs
- TypeGenericEnumerableViewSchema.cs
- DataObjectPastingEventArgs.cs
- FieldMetadata.cs
- ZoneButton.cs
- StorageSetMapping.cs
- Binding.cs
- BasicExpandProvider.cs
- EventLogPermission.cs
- PerformanceCountersElement.cs
- ErrorHandler.cs
- IisTraceListener.cs
- QueryCursorEventArgs.cs
- MethodCallConverter.cs
- HttpCacheVary.cs
- ConnectionStringsExpressionEditor.cs
- BevelBitmapEffect.cs
- RtfToXamlLexer.cs
- RTLAwareMessageBox.cs
- XPathPatternParser.cs
- ScrollBarAutomationPeer.cs
- VScrollProperties.cs
- StyleXamlTreeBuilder.cs
- InputProcessorProfiles.cs
- BamlResourceSerializer.cs
- WCFBuildProvider.cs
- DataRelation.cs
- SerializationEventsCache.cs
- Queue.cs
- HtmlLink.cs
- SmtpNtlmAuthenticationModule.cs
- infer.cs
- RuleSetCollection.cs
- DoubleAnimation.cs
- DetailsViewDeleteEventArgs.cs
- DateTimeParse.cs
- ReachSerializationUtils.cs
- WindowsListViewScroll.cs
- DesignerActionUI.cs
- TraceListeners.cs
- TypeNameConverter.cs
- SecurityContextTokenValidationException.cs
- MultiViewDesigner.cs
- DbConnectionClosed.cs
- TransformCollection.cs
- UriExt.cs
- StrokeCollection.cs
- RegexGroupCollection.cs
- ConnectionStringSettings.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- Message.cs
- Visitor.cs
- SectionInput.cs
- _ChunkParse.cs
- DotExpr.cs
- AttributeXamlType.cs
- EndEvent.cs
- FormsAuthenticationModule.cs
- UnknownWrapper.cs
- ZeroOpNode.cs
- StringBlob.cs
- CompositeTypefaceMetrics.cs
- Header.cs
- CrossAppDomainChannel.cs
- CroppedBitmap.cs
- ThicknessKeyFrameCollection.cs
- PrincipalPermission.cs
- EntityClassGenerator.cs
- FileUpload.cs
- PermissionSetEnumerator.cs