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
- _FtpDataStream.cs
- XPathBuilder.cs
- OperationContractAttribute.cs
- FormViewUpdateEventArgs.cs
- XmlDocument.cs
- ToolStripSettings.cs
- ConvertTextFrag.cs
- DesignTimeXamlWriter.cs
- SocketInformation.cs
- WorkflowDebuggerSteppingAttribute.cs
- StrokeNodeOperations2.cs
- XmlMtomReader.cs
- SqlConnectionString.cs
- DetailsViewInsertedEventArgs.cs
- QueryPageSettingsEventArgs.cs
- WindowsBrush.cs
- BitStream.cs
- ColorDialog.cs
- SecurityChannel.cs
- ObjectSerializerFactory.cs
- BorderGapMaskConverter.cs
- ObjectQueryExecutionPlan.cs
- XmlDataProvider.cs
- TemplateComponentConnector.cs
- ClientConfigurationSystem.cs
- LinqDataSourceView.cs
- HttpProfileBase.cs
- ChtmlCalendarAdapter.cs
- StateManagedCollection.cs
- HttpCachePolicyBase.cs
- ListViewUpdateEventArgs.cs
- DelegateBodyWriter.cs
- MarkupWriter.cs
- DefaultValueTypeConverter.cs
- EntryIndex.cs
- InputLanguageEventArgs.cs
- WriteLine.cs
- AdRotatorDesigner.cs
- UnsettableComboBox.cs
- InvalidCommandTreeException.cs
- DrawListViewSubItemEventArgs.cs
- SystemUnicastIPAddressInformation.cs
- WmlControlAdapter.cs
- SeverityFilter.cs
- SchemaAttDef.cs
- PopOutPanel.cs
- ToolStripItem.cs
- UidManager.cs
- BoundPropertyEntry.cs
- ConfigurationSettings.cs
- COM2FontConverter.cs
- SoapMessage.cs
- NativeMethods.cs
- COM2IManagedPerPropertyBrowsingHandler.cs
- DefaultValidator.cs
- SchemaSetCompiler.cs
- Base64Stream.cs
- VectorAnimationBase.cs
- PerformanceCounterPermissionEntryCollection.cs
- ActivityXamlServices.cs
- DefaultExpressionVisitor.cs
- IssuanceLicense.cs
- TextCompositionEventArgs.cs
- ArraySet.cs
- ProviderUtil.cs
- FramingEncoders.cs
- XmlElementAttribute.cs
- QueryableDataSource.cs
- ExpandCollapseProviderWrapper.cs
- DataGridViewTextBoxCell.cs
- DynamicMetaObject.cs
- ReferenceConverter.cs
- SqlRecordBuffer.cs
- FormsIdentity.cs
- OdbcTransaction.cs
- TraceUtils.cs
- X509RawDataKeyIdentifierClause.cs
- File.cs
- GAC.cs
- PostBackOptions.cs
- DbProviderFactoriesConfigurationHandler.cs
- FillRuleValidation.cs
- CollectionView.cs
- Menu.cs
- DrawingCollection.cs
- JsonUriDataContract.cs
- StreamGeometry.cs
- ToolBarOverflowPanel.cs
- COAUTHIDENTITY.cs
- AdornedElementPlaceholder.cs
- ProcessHost.cs
- TextTreeTextBlock.cs
- CLRBindingWorker.cs
- SendActivityDesigner.cs
- XPathAncestorQuery.cs
- AstTree.cs
- Identity.cs
- ManageRequest.cs
- EdmSchemaAttribute.cs
- _SecureChannel.cs