public TestModelBuilder Association(
            string sourceEntity, EdmAssociationEndKind sourceEndKind,
            string targetEntity, EdmAssociationEndKind targetEndKind)
        {
            _model.AddAssociationSet(
                "AssociationSet",
                _model.AddAssociationType(
                    "Association",
                    _model.GetEntityType(sourceEntity), sourceEndKind,
                    _model.GetEntityType(targetEntity), targetEndKind));

            return this;
        }
        public static EdmAssociationType AddAssociationType(
            this EdmModel model,
            string name,
            EdmEntityType sourceEntityType,
            EdmAssociationEndKind sourceAssociationEndKind,
            EdmEntityType targetEntityType,
            EdmAssociationEndKind targetAssociationEndKind)
        {
            //Contract.Requires(model != null);
            //Contract.Requires(!string.IsNullOrWhiteSpace(name));
            //Contract.Requires(sourceEntityType != null);
            //Contract.Requires(targetEntityType != null);
            Contract.Assert(model.Namespaces.Count == 1);

            var associationType = new EdmAssociationType().Initialize();

            associationType.Name = name;
            associationType.SourceEnd.Name = name + "_Source";
            associationType.SourceEnd.EntityType = sourceEntityType;
            associationType.SourceEnd.EndKind = sourceAssociationEndKind;
            associationType.TargetEnd.Name = name + "_Target";
            associationType.TargetEnd.EntityType = targetEntityType;
            associationType.TargetEnd.EndKind = targetAssociationEndKind;

            model.AddAssociationType(associationType);

            return associationType;
        }
        public TestModelBuilder Association(string name,
            string sourceEntity, EdmAssociationEndKind sourceEndKind, string sourceNavigationProperty,
            string targetEntity, EdmAssociationEndKind targetEndKind, string targetNavigationProperty)
        {
            var sourceEntityType = _model.GetEntityType(sourceEntity);
            var targetEntityType = _model.GetEntityType(targetEntity);

            var association
                = _model.AddAssociationType(name, sourceEntityType, sourceEndKind, targetEntityType, targetEndKind);

            _model.AddAssociationSet(name + "Set", association);

            if (sourceNavigationProperty != null)
            {
                sourceEntityType.AddNavigationProperty(sourceNavigationProperty, association);
            }

            if (targetNavigationProperty != null)
            {
                targetEntityType.AddNavigationProperty(targetNavigationProperty, association);
            }

            return this;
        }
 private static string GetXmlMultiplicity(EdmAssociationEndKind endKind)
 {
     switch (endKind)
     {
         case EdmAssociationEndKind.Many:
             return CsdlConstants.Value_EndMany;
         case EdmAssociationEndKind.Required:
             return CsdlConstants.Value_EndRequired;
         case EdmAssociationEndKind.Optional:
             return CsdlConstants.Value_EndOptional;
         default:
             Debug.Fail("Did you add a new EdmAssociationEndKind?");
             return string.Empty;
     }
 }