Tabela de mapeamento muitos para muitos

De exemplos que eu vi online e em um livro CodeFirst Framework de Entidade de Programação, quando você tem uma coleção em ambas as classes EF criaria uma tabela de mapeamento comoMembersRecipes e a chave primária de cada classe seria vinculada a essa tabela.

No entanto, quando eu faço o seguinte, eu em vez disso recebo um novo campo noRecipes mesa chamadaMember_Id e umRecipe_Id noMembers mesa.

O que cria apenas dois relacionamentos um-para-muitos, mas não muitos-para-muitos, então eu poderia ter o Associado 3 vinculado a Receitas (4,5,6) e Receita 4 vinculada a Membros (1,2,3) etc.

Existe uma maneira de criar essa tabela de mapeamento? e se sim, como você nomeia algo como "livros de receitas"?

obrigado

    public abstract class Entity {
        [Required]
        public int Id { get; set; }
    }   

    public class Member : Entity {
        [Required]
        public string Name { get; set; }

        public virtual IList<Recipe> Recipes { get; set; }
    }

    public class Recipe : Entity {  
        [Required]
        public string Name { get; set; }

        [ForeignKey("Author")]
        public int AuthorId { get; set; }
        public virtual Member Author { get; set; }

            ....

        public virtual IList<Member> Members { get; set; }
    }

ATUALIZAR: Abaixo está uma outra abordagem que tentei, que não usa a API do Fluent e substitui aAuthorId & Author emRecipe com um sinalizador de proprietário, também renomeiei o exemplo abaixo deCookbooks paraMembersRecipes, isso também corrige meu problema de maneira semelhante à resposta, mas, como mencionado, tem outras implicações.

public class MembersRecipes {

    [Key, Column(Order = 0)]
    [ForeignKey("Recipe")]
    public int RecipeId { get; set; }
    public virtual Recipe Recipe { get; set; }

    [Key, Column(Order = 1)]
    [ForeignKey("Member")]
    public int MemberId { get; set; }
    public virtual Member Member { get; set; }

    public bool Owner { get; set; }
}

e emRecipe & Member classes eu mudei as coleções para

public virtual IList<MembersRecipes> MembersRecipes { get; set; }

questionAnswers(1)

yourAnswerToTheQuestion