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
- AttachedAnnotationChangedEventArgs.cs
- ConfigurationManagerHelperFactory.cs
- LambdaSerializationException.cs
- CodeMemberEvent.cs
- FileRecordSequenceHelper.cs
- DbConnectionPoolCounters.cs
- XXXInfos.cs
- ObjectDataSource.cs
- RadioButtonStandardAdapter.cs
- SevenBitStream.cs
- SqlInternalConnection.cs
- MonitorWrapper.cs
- MetabaseReader.cs
- BaseServiceProvider.cs
- UriSection.cs
- MessageQuerySet.cs
- FormatVersion.cs
- DBProviderConfigurationHandler.cs
- WaitHandle.cs
- PersonalizationProviderCollection.cs
- TextOutput.cs
- Size.cs
- JoinTreeSlot.cs
- ValueOfAction.cs
- QilExpression.cs
- Translator.cs
- UnauthorizedWebPart.cs
- DEREncoding.cs
- AutomationPatternInfo.cs
- FontWeightConverter.cs
- LayoutInformation.cs
- BasicAsyncResult.cs
- NamedPipeChannelListener.cs
- TdsParserHelperClasses.cs
- StylusSystemGestureEventArgs.cs
- DataFieldConverter.cs
- SimpleExpression.cs
- DocumentXPathNavigator.cs
- ControlDesigner.cs
- PieceNameHelper.cs
- SelectionUIHandler.cs
- SqlBuilder.cs
- AffineTransform3D.cs
- FileDialog.cs
- XmlSchemaExporter.cs
- ConfigXmlWhitespace.cs
- ManagedCodeMarkers.cs
- DataControlFieldCollection.cs
- ExpressionVisitor.cs
- Group.cs
- SevenBitStream.cs
- CertificateManager.cs
- _DigestClient.cs
- sqlpipe.cs
- DescendentsWalkerBase.cs
- ReferencedAssemblyResolver.cs
- TriggerBase.cs
- InfoCardRSAPKCS1SignatureDeformatter.cs
- Sentence.cs
- WebSysDescriptionAttribute.cs
- IntegerValidator.cs
- ConditionalAttribute.cs
- Properties.cs
- SubstitutionResponseElement.cs
- PtsContext.cs
- DPCustomTypeDescriptor.cs
- ColorKeyFrameCollection.cs
- TaskFormBase.cs
- CalloutQueueItem.cs
- ConfigurationManagerHelper.cs
- ListViewUpdateEventArgs.cs
- GeneralTransform3DGroup.cs
- StreamGeometryContext.cs
- FtpWebRequest.cs
- MemberDescriptor.cs
- ArraySet.cs
- BitVector32.cs
- Trace.cs
- KnownBoxes.cs
- ItemCheckedEvent.cs
- Calendar.cs
- LabelTarget.cs
- ToolStripRenderer.cs
- HttpVersion.cs
- CompensatableTransactionScopeActivity.cs
- MD5CryptoServiceProvider.cs
- GradientBrush.cs
- KeysConverter.cs
- Point3DConverter.cs
- ComboBoxItem.cs
- TypeToTreeConverter.cs
- RotateTransform3D.cs
- VisualBrush.cs
- TrustLevelCollection.cs
- TripleDESCryptoServiceProvider.cs
- ServiceInstallComponent.cs
- DbSourceCommand.cs
- EditingScopeUndoUnit.cs
- CryptoConfig.cs
- CalculatedColumn.cs