Таблица сопоставления «многие ко многим»

Из примеров, которые я видел в Интернете и в книге CodeFirst Programming Entity Framework, если у вас есть коллекция для обоих классов, EF создаст таблицу отображения, такую какMembersRecipes и первичный ключ от каждого класса будет ссылаться на эту таблицу.

Однако, когда я делаю ниже, я вместо этого получаю новое поле вRecipes стол называетсяMember_Id иRecipe_Id вMembers Таблица.

Это создает только два отношения «один ко многим», но не «многие ко многим», поэтому я мог бы связать члена 3 с рецептами (4,5,6) и рецептом 4 с членами (1,2,3) и т. Д.

Есть ли способ создать эту таблицу сопоставления? и если да, то как вы называете это что-то еще, например, «кулинарные книги»? ?

Спасибо

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

UPDATE: Below is another approach I have tried which doesn't use the Fluent API and replaces the AuthorId & Амп;Author наRecipe с флагом владельца, я также переименовал приведенный ниже пример изCookbooks вMembersRecipes, это также исправляет мою проблему, похожую на ответ, но, как уже упоминалось, имеет дополнительные последствия.

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

И вRecipe & Амп;Member классы, которые я изменил коллекции

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

Ответы на вопрос(1)

Ваш ответ на вопрос