Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntityDesign / Design / System / Data / EntityModel / Emitters / AssociationTypeEmitter.cs / 1305376 / AssociationTypeEmitter.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.CodeDom; using System.Data; using System.Data.Metadata.Edm; using System.Data.EntityModel.SchemaObjectModel; using System.Diagnostics; namespace System.Data.EntityModel.Emitters { ////// Summary description for NestedTypeEmitter. /// internal sealed class AssociationTypeEmitter : SchemaTypeEmitter { public AssociationTypeEmitter(ClientApiGenerator generator, AssociationType associationType) : base(generator, associationType) { } public override CodeTypeDeclarationCollection EmitApiClass() { Debug.Assert(Item.AssociationEndMembers.Count == 2, "must have exactly two ends"); AssociationEndMember end1 = Item.AssociationEndMembers[0]; AssociationEndMember end2 = Item.AssociationEndMembers[1]; Generator.CompileUnit.AssemblyCustomAttributes.Add( AttributeEmitter.EmitSimpleAttribute( Utils.FQAdoFrameworkDataClassesName("EdmRelationshipAttribute"), Item.NamespaceName, //it is ok to use the c namespace because relationships aren't backed by clr objects Item.Name, end1.Name, GetMultiplicityCodeExpression(end1.RelationshipMultiplicity), GetEndTypeCodeExpression(end1), end2.Name, GetMultiplicityCodeExpression(end2.RelationshipMultiplicity), GetEndTypeCodeExpression(end2) )); // this method doesn't actually create a new type, just a new assembly level attribute for each end return new CodeTypeDeclarationCollection(); } private CodeTypeOfExpression GetEndTypeCodeExpression(AssociationEndMember end) { return new CodeTypeOfExpression(Generator.GetFullyQualifiedTypeReference(((RefType)end.TypeUsage.EdmType).ElementType)); } private CodeExpression GetMultiplicityCodeExpression(RelationshipMultiplicity multiplicity) { // example: // [System.Data.Objects.DataClasses.EdmRelationshipRoleAttribute("CustomerOrder", "Customer", global::System.Data.Metadata.Edm.RelationshipMultiplicity.One, typeof(Customer))] string roleMultiplicity = multiplicity.ToString(); CodeExpression roleMultiplicityExpression = Emitter.EmitEnumMemberExpression( TypeReference.AdoFrameworkMetadataEdmType("RelationshipMultiplicity"), roleMultiplicity); return roleMultiplicityExpression; } internal new AssociationType Item { get { return base.Item as AssociationType; } } } } // 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
- NumberFunctions.cs
- HitTestWithGeometryDrawingContextWalker.cs
- TraceUtility.cs
- BamlResourceSerializer.cs
- JournalEntry.cs
- SpellerInterop.cs
- PageTheme.cs
- HostedElements.cs
- CodeCatchClauseCollection.cs
- PropertyChangedEventArgs.cs
- Double.cs
- SplitContainer.cs
- XamlSerializationHelper.cs
- UInt64Converter.cs
- ExceptionUtil.cs
- StoreAnnotationsMap.cs
- ExpressionHelper.cs
- MultiByteCodec.cs
- ContentDisposition.cs
- BitmapImage.cs
- ColumnBinding.cs
- RewritingSimplifier.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- CodeBinaryOperatorExpression.cs
- DaylightTime.cs
- Debug.cs
- DataGridItem.cs
- DSACryptoServiceProvider.cs
- Helpers.cs
- XmlSchemaParticle.cs
- documentsequencetextpointer.cs
- ReadOnlyAttribute.cs
- LiteralSubsegment.cs
- ListSortDescription.cs
- BinaryMethodMessage.cs
- EdmProperty.cs
- TaskFactory.cs
- OperatingSystem.cs
- MonikerUtility.cs
- MyContact.cs
- SafeHandle.cs
- TypeToken.cs
- OrderPreservingSpoolingTask.cs
- Registry.cs
- ConstructorArgumentAttribute.cs
- NTAccount.cs
- ByeMessageApril2005.cs
- QuaternionAnimation.cs
- SystemFonts.cs
- AsymmetricCryptoHandle.cs
- PermissionAttributes.cs
- WindowsStatusBar.cs
- CngProvider.cs
- FrameSecurityDescriptor.cs
- DeploymentSectionCache.cs
- FontFamilyConverter.cs
- IIS7UserPrincipal.cs
- Command.cs
- TextTreeTextBlock.cs
- ManagedFilter.cs
- EntityStoreSchemaFilterEntry.cs
- TreeView.cs
- XmlArrayItemAttribute.cs
- UserMapPath.cs
- NTAccount.cs
- CodeDOMProvider.cs
- XmlSchemaAny.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- XPathPatternParser.cs
- TextEditorSelection.cs
- Attribute.cs
- SizeAnimationClockResource.cs
- EdmItemCollection.cs
- RectIndependentAnimationStorage.cs
- SqlCacheDependencySection.cs
- PreservationFileReader.cs
- LingerOption.cs
- followingquery.cs
- OutputBuffer.cs
- ClientBuildManager.cs
- XamlClipboardData.cs
- ValidationResult.cs
- LineSegment.cs
- ReflectPropertyDescriptor.cs
- ArrayWithOffset.cs
- XmlElementAttribute.cs
- MetadataPropertyvalue.cs
- OutOfMemoryException.cs
- DecimalSumAggregationOperator.cs
- ScalarType.cs
- HtmlValidationSummaryAdapter.cs
- WebBrowser.cs
- DivideByZeroException.cs
- SchemaTypeEmitter.cs
- PolicyReader.cs
- DmlSqlGenerator.cs
- HttpProfileBase.cs
- OLEDB_Util.cs
- ProcessModelInfo.cs
- ListSortDescriptionCollection.cs