public static AssociationType AddAssociationType(
            this EdmModel model,
            string name,
            EntityType sourceEntityType,
            RelationshipMultiplicity sourceAssociationEndKind,
            EntityType targetEntityType,
            RelationshipMultiplicity targetAssociationEndKind,
            string modelNamespace = null)
        {
            DebugCheck.NotNull(model);
            DebugCheck.NotEmpty(name);
            DebugCheck.NotNull(sourceEntityType);
            DebugCheck.NotNull(targetEntityType);

            var associationType
                = new AssociationType(
                    name,
                    modelNamespace ?? DefaultModelNamespace,
                    false,
                    DataSpace.CSpace)
                    {
                        SourceEnd =
                            new AssociationEndMember(
                                name + "_Source", sourceEntityType.GetReferenceType(), sourceAssociationEndKind),
                        TargetEnd =
                            new AssociationEndMember(
                                name + "_Target", targetEntityType.GetReferenceType(), targetAssociationEndKind)
                    };

            model.AddAssociationType(associationType);

            return associationType;
        }
        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;
        }