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