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
- AsyncStreamReader.cs
- sqlstateclientmanager.cs
- GlobalizationSection.cs
- EventLogPermissionEntryCollection.cs
- XmlSiteMapProvider.cs
- CreatingCookieEventArgs.cs
- DocumentPage.cs
- XmlMemberMapping.cs
- SamlSecurityToken.cs
- PipeConnection.cs
- Sql8ExpressionRewriter.cs
- StaticTextPointer.cs
- SpellerInterop.cs
- AssociatedControlConverter.cs
- CatalogPart.cs
- TypeInitializationException.cs
- SwitchElementsCollection.cs
- StatusCommandUI.cs
- ExpressionBuilderContext.cs
- SecurityIdentifierElementCollection.cs
- AppSettingsExpressionBuilder.cs
- DataMemberFieldEditor.cs
- ProfileGroupSettingsCollection.cs
- SamlAttributeStatement.cs
- PerfService.cs
- DelegatedStream.cs
- LinearGradientBrush.cs
- LinearGradientBrush.cs
- SystemUdpStatistics.cs
- DrawListViewItemEventArgs.cs
- _StreamFramer.cs
- SolidBrush.cs
- LinkDescriptor.cs
- SmiTypedGetterSetter.cs
- DataServiceKeyAttribute.cs
- ProcessModelSection.cs
- ProxyAttribute.cs
- XpsStructure.cs
- WebPartEditorOkVerb.cs
- Comparer.cs
- NativeMethods.cs
- ToolStripButton.cs
- cookieexception.cs
- DataGrid.cs
- activationcontext.cs
- PeerCredentialElement.cs
- MexHttpBindingElement.cs
- DesignerCommandAdapter.cs
- DecimalAnimationBase.cs
- ArgIterator.cs
- ConstraintCollection.cs
- ClientProxyGenerator.cs
- WsdlHelpGeneratorElement.cs
- WinOEToolBoxItem.cs
- SerializerProvider.cs
- SignHashRequest.cs
- HtmlWindowCollection.cs
- DropDownHolder.cs
- ErrorFormatterPage.cs
- VisualProxy.cs
- WindowsPen.cs
- SQlBooleanStorage.cs
- ByteStack.cs
- GenericUriParser.cs
- StrokeCollection2.cs
- StringValidator.cs
- TextSelectionHelper.cs
- SqlRewriteScalarSubqueries.cs
- SqlError.cs
- HttpListenerPrefixCollection.cs
- ObjectDataSourceMethodEventArgs.cs
- TargetConverter.cs
- _CacheStreams.cs
- LocationFactory.cs
- FileDialogCustomPlace.cs
- GeometryDrawing.cs
- StringArrayConverter.cs
- ToolStripArrowRenderEventArgs.cs
- ProfilePropertySettingsCollection.cs
- QuaternionRotation3D.cs
- Pkcs7Signer.cs
- EntityDataSourceStatementEditorForm.cs
- X500Name.cs
- Attributes.cs
- Int16.cs
- DataContractSet.cs
- ObjectComplexPropertyMapping.cs
- DataObjectEventArgs.cs
- RequestCacheEntry.cs
- ReturnValue.cs
- HtmlProps.cs
- MultiView.cs
- AspProxy.cs
- CompositeDataBoundControl.cs
- PropertyFilterAttribute.cs
- FormsIdentity.cs
- DataGridViewCellValidatingEventArgs.cs
- WebScriptClientGenerator.cs
- StylusCollection.cs
- Bezier.cs