Add property in relation to N-N

6

How to add properties (columns) in an N-N relation using EF?

For example, I have class Produto :

public class Produto
{
    [Key]
    public int ProdutoID { get; set; }
    public string Descricao { get; set; }
    public decimal Valor { get; set; }

    public virtual ICollection<Venda> Vendas { get; set; }

    public Produto()
    {
        this.Vendas = new List<Venda>();
    }
}

And I have the class Venda :

public class Venda
{
    [Key]
    public int VendaID { get; set; }
    public string Descricao { get; set; }
    public decimal Total { get; set; }

    public virtual ICollection<Produto> Produtos { get; set; }

    public Venda()
    {
        this.Produtos = new List<Produto>();
    }
}

I'm using Code First and so EF automatically creates a VendaProdutos table, the problem is that this table should have more fields like Quantidade , etc.

Is there any way I can do this without getting out of Code First or will I have to look for another way to map my classes (Fluent API for example)?

    
asked by anonymous 12.03.2015 / 14:10

1 answer

7

I think the only solution is to create a class for the relationship.

In your case, it would look like this:

Product Class

public class Produto
{
    [Key]
    public int ProdutoID { get; set; }
    public string Descricao { get; set; }
    public decimal Valor { get; set; }

    public virtual ICollection<ProdutoVenda> ProdutosVenda { get; set; }

}

Selling Class

    public class Venda
    {
        [Key]
        public int VendaID { get; set; }
        public string Descricao { get; set; }
        public decimal Total { get; set; }

        public virtual ICollection<ProdutoVenda> ProdutosVenda { get; set; }

    }

Class Product Sales

public class ProdutoVenda
{
    public int ProdutoId { get; set; }
    public int VendaID { get; set; }

    public virtual Produto Produto { get; set; }
    public virtual Venda Venda { get; set; }

    public int Quantidade { get; set; }
}
    
12.03.2015 / 14:28