Fluent Mapping API 1:N cascateado

Asked

Viewed 126 times

1

How to Model a Relationship of 1:N, where, 1 user may have several requests, and in this request we have reference to another entity? Ex:

public class Usuario
{
   public int UsuarioId { get; set; }
   public string Name {get; set; }

   public ICollection<Pedido> Pedidos {get; set;}
}

public class Pedido
{
   public int PedidoId { get; set; }
   public DateTime PedidoDate {get; set;}

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

public class Produto
{
   public int ProdutoId {get; set;}
   public string ProdutoNome {get; set;}
}

Obs: Using the resource Fluent Api mapped...

  • I didn’t get that part: "and in this request we have reference to another entity?"

1 answer

4


No need to use Fluent Api in your case, just add the inverse relationship properties, for example:

public class Usuario
{
   public int UsuarioId { get; set; }
   public string Name {get; set; }

   public ICollection<Pedido> Pedidos {get; set;}
}
public class Pedido
{
   public int PedidoId { get; set; }
   public DateTime PedidoDate {get; set;}

   public int UsuarioId{get;set;

   public Usuario Usuario{get;set;}
   public ICollection<Produto> Produtos {get; set;} 
}
public class Produto
{
   public int ProdutoId {get; set;}
   public string ProdutoNome {get; set;}
   //Se um produto for apenas de um pedido adicione a referência aqui também
   //Se a relação entre produto x pedido for de N:N, crie uma entidade associativa.
}

This way above you already have what you want. However, if you really want to do by Fluent Api, just do it like this:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

        modelBuilder.Entity<Pedido>()
                    .HasRequired<Usuario>(s => s.Usuario) 
                    .WithMany(s => s.Pedidos);

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.