I am developing a simple application in MVC
using Entity
, being product register, I am using metodo seed
to insert the values in the table, however in the Many-to-Many
relationship I can not set the values in the auxiliary table what procedure should I do?
Here are the codes used:
Classe Produto:
public int ProdutoID { get; set; }
public string Nome { get; set; }
public string Descricao { get; set; }
public string Fabricante { get; set; }
public string Codigo_Barras { get; set; }
public string Tamanho { get; set; }
public bool Novo { get; set; }
//Relacionamentos
public virtual ICollection<SubCategoria> SubCategorias { get; set; }
Subcategoria:
public int SubCategoriaID { get; set; }
public string Nome { get; set; }
//Relacionamentos
public int CategoriaID { get; set; }
public virtual Categoria Categoria { get; set; }
public virtual ICollection<Produto> Produtos { get; set; }
Metodo Seed:
IList<SubCategoria> subCategorias = new List<SubCategoria>();
subCategorias.Add(new SubCategoria() { Nome = "Vestuários", CategoriaID = 1 });
subCategorias.Add(new SubCategoria() { Nome = "Calçados", CategoriaID = 1 });
subCategorias.Add(new SubCategoria() { Nome = "Eletrodomésticos", CategoriaID = 1 });
subCategorias.Add(new SubCategoria() { Nome = "Eletronicos", CategoriaID = 1 });
subCategorias.Add(new SubCategoria() { Nome = "Medicamentos", CategoriaID = 1 });
subCategorias.Add(new SubCategoria() { Nome = "Pet", CategoriaID = 1 });
subCategorias.Add(new SubCategoria() { Nome = "Informática", CategoriaID = 1 });
foreach (SubCategoria subCategoria in subCategorias)
{
context.SubCategorias.AddOrUpdate(x => x.Nome, subCategoria);
}
context.SaveChanges();
IList<Produto> produtos = new List<Produto>();
produtos.Add(new Produto() { Nome = "Camiseta Regata", Descricao = "Camiseta Regata Masculina", Tamanho = "P", Fabricante = "Rikwill", Novo = true, Codigo_Barras = "78985211452" });
produtos.Add(new Produto() { Nome = "Addidas Neo", Descricao = "Tênis Addidas Neo 2017", Tamanho = "42", Fabricante = "Addidas", Novo = true, Codigo_Barras = "78985284252" });
produtos.Add(new Produto() { Nome = "Geladeira Eletrolux", Descricao = "Geladeira Eletrolux 432 Litros Inox 2015", Tamanho = "432 L", Fabricante = "Eletrolux", Novo = true, Codigo_Barras = "78524211452" });
produtos.Add(new Produto() { Nome = "Televisão 32 Pol Bustter", Descricao = "Televisão de 32 Poletadas Bustter Double Digital 3 HDMI + 1 USB + Conversor Digital Integrado", Tamanho = "32\"", Fabricante = "Bustter", Novo = false, Codigo_Barras = "Não Possui" });
produtos.Add(new Produto() { Nome = "Buscofen 4 Mg", Descricao = "Buscofen Sem Cólicas 4 Mg", Tamanho = "10 caps", Fabricante = "Buscopan Laboratórios", Novo = true, Codigo_Barras = "78983424252" });
produtos.Add(new Produto() { Nome = "Ração Cadelinha Feliz", Descricao = "Ração Cadelinha Feliz com Multi-proteínas", Tamanho = "1 Kg", Fabricante = "Canino Louco", Novo = true, Codigo_Barras = "78251524525" });
produtos.Add(new Produto() { Nome = "Roteador Intelbras RB400", Descricao = "Roteador Intelbras RB400 700 Mbps 3 antenas", Tamanho = "1 Unidade", Fabricante = "Intelbras", Novo = false, Codigo_Barras = "Não Possui" });
foreach (Produto produto in produtos)
{
context.Produtos.AddOrUpdate(x => x.Nome, produto);
}
context.SaveChanges();
code that determines the relationship in OnModelCreating
:
modelBuilder.Entity<Produto>().HasMany<SubCategoria>(s => s.SubCategorias).WithMany(c => c.Produtos).Map(cs =>
{
cs.MapLeftKey("ProdutoRefId");
cs.MapRightKey("SubCategoriaRefId");
cs.ToTable("ProdutoSubCategoria");
});
How do I set the values in the produtosubcategoria
table that was created by OnModelCreating
?
In this case, I wanted to say that product 1 contains subcategory 1, product 2, subcategory 2, and so on ...