Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / Structures / TypeConstant.cs / 1305376 / TypeConstant.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Text;
using System.Collections.Generic;
using System.Data.Mapping.ViewGeneration.CqlGeneration;
using System.Data.Common;
using System.Data.Common.Utils;
using System.Data.Metadata.Edm;
using System.Diagnostics;
namespace System.Data.Mapping.ViewGeneration.Structures
{
// A constant for storing type values, e.g., a type constant is used to
// denotes (say) a Person type, Address type, etc. It essentially
// encapsulates a CDM Type
internal class TypeConstant : Constant
{
#region Constructor
// effects: Creates a type constant corresponding to "type"
internal TypeConstant(EdmType type)
{
m_cdmType = type;
}
#endregion
#region Fields
// The CDM type denoted by this type constant
private EdmType m_cdmType;
#endregion
#region Properties
// effects: Returns the CDM type corresponding to this
internal EdmType CdmType
{
get { return m_cdmType; }
}
#endregion
#region Methods
// effects: Given a projectedSlot that contributes to outputMember in
// the output extent view, generates a constructor expression for
// outputMember's type, i.e, an expression of the form "Type(....)"
// If refscope is non-null, instead of constructing an Entity or
// Complex type, constructs a reference
internal override StringBuilder AsCql(StringBuilder builder, MemberPath outputMember, string blockAlias)
{
// Gather the fields for a constructor or a Ref expression
List fields = new List();
EntitySet refScope = outputMember.GetScopeOfRelationEnd();
EntityType refEntityType = null;
if (refScope != null)
{
// Construct a scoped reference: CreateRef(CPerson1, row(pid1, pid2))
EntityType entityType = refScope.ElementType;
refEntityType = (EntityType)(((RefType)outputMember.EdmType).ElementType);
builder.Append("CreateRef(");
CqlWriter.AppendEscapedQualifiedName(builder, refScope.EntityContainer.Name, refScope.Name);
builder.Append(", row(");
foreach (EdmMember keyMember in entityType.KeyMembers)
{
// Given the member, we need its aliased name
MemberPath memberPath = new MemberPath(outputMember, keyMember);
string fullFieldAlias = CqlWriter.GetQualifiedName(blockAlias, memberPath.CqlFieldAlias);
fields.Add(fullFieldAlias);
}
}
else
{
// Construct an entity/complex/Association type in the Members order
// for fields: CPerson(CPerson1_Pid, CPerson1_Name)
// It better be a structural type
StructuralType structuralType = (StructuralType)m_cdmType;
foreach (EdmMember member in Helper.GetAllStructuralMembers(structuralType))
{
// Given the member, we need its aliased name: CPerson1_Pid
MemberPath memberPath = new MemberPath(outputMember, member);
string fullFieldAlias = CqlWriter.GetQualifiedName(blockAlias, memberPath.CqlFieldAlias);
fields.Add(fullFieldAlias);
}
// Constructor call for the constructedType
CqlWriter.AppendEscapedTypeName(builder, m_cdmType);
builder.Append('(');
}
StringUtil.ToSeparatedString(builder, fields, ", ", null);
builder.Append(')');
if (refScope != null)
{
Debug.Assert(refEntityType != null);
builder.Append(",");
CqlWriter.AppendEscapedTypeName(builder, refEntityType);
builder.Append(')');
}
return builder;
}
#endregion
#region Public Override Methods for object and String methods
protected override bool IsEqualTo(Constant right)
{
TypeConstant rightTypeConstant = right as TypeConstant;
if (rightTypeConstant == null)
{
return false;
}
return m_cdmType == rightTypeConstant.m_cdmType;
}
protected override int GetHash()
{
if (m_cdmType == null)
{ // null type constant
return 0;
}
else
{
return m_cdmType.GetHashCode();
}
}
private void InternalToString(StringBuilder builder, bool isInvariant)
{
if (m_cdmType == null)
{ // NULL type constant
builder.Append(isInvariant ? "NULL" : System.Data.Entity.Strings.ViewGen_Null);
}
else
{
builder.Append(m_cdmType.Name);
}
}
internal override string ToUserString()
{
StringBuilder builder = new StringBuilder();
InternalToString(builder, false);
return builder.ToString();
}
internal override void ToCompactString(StringBuilder builder)
{
InternalToString(builder, true);
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
using System.Text;
using System.Collections.Generic;
using System.Data.Mapping.ViewGeneration.CqlGeneration;
using System.Data.Common;
using System.Data.Common.Utils;
using System.Data.Metadata.Edm;
using System.Diagnostics;
namespace System.Data.Mapping.ViewGeneration.Structures
{
// A constant for storing type values, e.g., a type constant is used to
// denotes (say) a Person type, Address type, etc. It essentially
// encapsulates a CDM Type
internal class TypeConstant : Constant
{
#region Constructor
// effects: Creates a type constant corresponding to "type"
internal TypeConstant(EdmType type)
{
m_cdmType = type;
}
#endregion
#region Fields
// The CDM type denoted by this type constant
private EdmType m_cdmType;
#endregion
#region Properties
// effects: Returns the CDM type corresponding to this
internal EdmType CdmType
{
get { return m_cdmType; }
}
#endregion
#region Methods
// effects: Given a projectedSlot that contributes to outputMember in
// the output extent view, generates a constructor expression for
// outputMember's type, i.e, an expression of the form "Type(....)"
// If refscope is non-null, instead of constructing an Entity or
// Complex type, constructs a reference
internal override StringBuilder AsCql(StringBuilder builder, MemberPath outputMember, string blockAlias)
{
// Gather the fields for a constructor or a Ref expression
List fields = new List();
EntitySet refScope = outputMember.GetScopeOfRelationEnd();
EntityType refEntityType = null;
if (refScope != null)
{
// Construct a scoped reference: CreateRef(CPerson1, row(pid1, pid2))
EntityType entityType = refScope.ElementType;
refEntityType = (EntityType)(((RefType)outputMember.EdmType).ElementType);
builder.Append("CreateRef(");
CqlWriter.AppendEscapedQualifiedName(builder, refScope.EntityContainer.Name, refScope.Name);
builder.Append(", row(");
foreach (EdmMember keyMember in entityType.KeyMembers)
{
// Given the member, we need its aliased name
MemberPath memberPath = new MemberPath(outputMember, keyMember);
string fullFieldAlias = CqlWriter.GetQualifiedName(blockAlias, memberPath.CqlFieldAlias);
fields.Add(fullFieldAlias);
}
}
else
{
// Construct an entity/complex/Association type in the Members order
// for fields: CPerson(CPerson1_Pid, CPerson1_Name)
// It better be a structural type
StructuralType structuralType = (StructuralType)m_cdmType;
foreach (EdmMember member in Helper.GetAllStructuralMembers(structuralType))
{
// Given the member, we need its aliased name: CPerson1_Pid
MemberPath memberPath = new MemberPath(outputMember, member);
string fullFieldAlias = CqlWriter.GetQualifiedName(blockAlias, memberPath.CqlFieldAlias);
fields.Add(fullFieldAlias);
}
// Constructor call for the constructedType
CqlWriter.AppendEscapedTypeName(builder, m_cdmType);
builder.Append('(');
}
StringUtil.ToSeparatedString(builder, fields, ", ", null);
builder.Append(')');
if (refScope != null)
{
Debug.Assert(refEntityType != null);
builder.Append(",");
CqlWriter.AppendEscapedTypeName(builder, refEntityType);
builder.Append(')');
}
return builder;
}
#endregion
#region Public Override Methods for object and String methods
protected override bool IsEqualTo(Constant right)
{
TypeConstant rightTypeConstant = right as TypeConstant;
if (rightTypeConstant == null)
{
return false;
}
return m_cdmType == rightTypeConstant.m_cdmType;
}
protected override int GetHash()
{
if (m_cdmType == null)
{ // null type constant
return 0;
}
else
{
return m_cdmType.GetHashCode();
}
}
private void InternalToString(StringBuilder builder, bool isInvariant)
{
if (m_cdmType == null)
{ // NULL type constant
builder.Append(isInvariant ? "NULL" : System.Data.Entity.Strings.ViewGen_Null);
}
else
{
builder.Append(m_cdmType.Name);
}
}
internal override string ToUserString()
{
StringBuilder builder = new StringBuilder();
InternalToString(builder, false);
return builder.ToString();
}
internal override void ToCompactString(StringBuilder builder)
{
InternalToString(builder, true);
}
#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
- MarkupCompilePass1.cs
- DependencyObjectPropertyDescriptor.cs
- BooleanAnimationBase.cs
- StatusBarPanel.cs
- ImportContext.cs
- TabControlToolboxItem.cs
- mediaeventshelper.cs
- WsrmMessageInfo.cs
- SelectionPattern.cs
- Int16Storage.cs
- NativeObjectSecurity.cs
- QilScopedVisitor.cs
- IndexOutOfRangeException.cs
- Header.cs
- Converter.cs
- ExtendedTransformFactory.cs
- ElementsClipboardData.cs
- Variable.cs
- XmlILAnnotation.cs
- TextRangeEdit.cs
- ConfigurationSectionCollection.cs
- SerializableTypeCodeDomSerializer.cs
- ConstraintEnumerator.cs
- KnownBoxes.cs
- MethodBuilder.cs
- AsyncOperationManager.cs
- WaitHandleCannotBeOpenedException.cs
- StylusTip.cs
- TypeReference.cs
- NativeWindow.cs
- TemplateContent.cs
- SendActivityDesignerTheme.cs
- DebugController.cs
- _HelperAsyncResults.cs
- OdbcErrorCollection.cs
- XmlResolver.cs
- HandoffBehavior.cs
- DataGridItem.cs
- ObjectDataSourceStatusEventArgs.cs
- HScrollProperties.cs
- PointCollection.cs
- DataList.cs
- OracleBoolean.cs
- ValidatorCompatibilityHelper.cs
- TextSpanModifier.cs
- Point.cs
- PerfService.cs
- DataFieldConverter.cs
- ProjectedSlot.cs
- ForeignKeyConstraint.cs
- SqlDataSourceView.cs
- SpellCheck.cs
- BitmapEffectGroup.cs
- DesignerDataColumn.cs
- AspNetCompatibilityRequirementsAttribute.cs
- ActivitySurrogate.cs
- DecoratedNameAttribute.cs
- AngleUtil.cs
- TreeViewItemAutomationPeer.cs
- ParagraphVisual.cs
- DrawingVisualDrawingContext.cs
- DispatcherProcessingDisabled.cs
- BamlTreeUpdater.cs
- SqlFunctionAttribute.cs
- SqlCacheDependencyDatabase.cs
- Compilation.cs
- ItemMap.cs
- Repeater.cs
- ForceCopyBuildProvider.cs
- MexBindingElement.cs
- StorageEntityContainerMapping.cs
- XpsStructure.cs
- FtpWebRequest.cs
- DelegatingConfigHost.cs
- MetadataFile.cs
- SelectManyQueryOperator.cs
- BooleanFacetDescriptionElement.cs
- MethodBody.cs
- OleDbCommand.cs
- ClientFormsIdentity.cs
- TemplateColumn.cs
- FileClassifier.cs
- DispatcherOperation.cs
- TransportChannelListener.cs
- CharEntityEncoderFallback.cs
- TokenCreationException.cs
- DiagnosticStrings.cs
- SqlNodeAnnotation.cs
- ResourceProperty.cs
- RowVisual.cs
- MenuBase.cs
- InkCanvasFeedbackAdorner.cs
- DoWorkEventArgs.cs
- util.cs
- FlowPosition.cs
- DataQuery.cs
- TypeExtensions.cs
- TextRangeEditLists.cs
- PauseStoryboard.cs
- SerializationInfoEnumerator.cs