es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Relación de tablas 3

Estoy intentando establecer una relación entre 3 tablas en c#.

Mis modelos son:

Guitarra:

public class Guitarra
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public int Id { get; set; }
[MaxLength(30)]
[Required]
public string Modelo { get; set; }
public int? Precio { get; set; }
[NotMapped]
public virtual Marca Marca { get; set; }
public int MarcaId { get; set; }
}

Marca:

public class Marca
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public int Id { get; set; }
[Required]
public string Nombre { get; set; }
[NotMapped]
public virtual ICollection Guitarras { get; set; }
public Marca()
{
Guitarras = new HashSet();
}
}

Compra: (algunas propiedades pueden faltar aquí)

public class Compra
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
public int Id { get; set; }
[Required]
[MaxLength(40)]
public string NombreComprador { get; set; }
[NotMapped]
public virtual Guitarra Guitarra { get; set; }
public int GuitarraId { get; set; }
}

He logrado vincular las tablas de Guitarra y Marca, pero no puedo lidiar con la tercera.
Aquí está mi código hasta ahora:

modelBuilder.Entity(entity =>
{
entity.HasOne(guitarra => guitarra.Marca)
.WithMany(brand => brand.Guitarras)
.HasForeignKey(guitarra => guitarra.MarcaId)
.OnDelete(DeleteBehavior.ClientSetNull);
});

La clave externa en la tabla Compra debería ser el ID de la guitarra, pero si tienes una mejor idea, estoy abierto a ella.
Entonces, ¿cómo hago lo mismo con las Compras?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Se puede vincular las tablas Purchase y Guitar agregando una clave foránea en la tabla Purchase que haga referencia a la columna Id de la tabla Guitar. Esto se puede hacer agregando el siguiente código a su modelBuilder:

    modelBuilder.Entity<Purchase>(entity =>
            {
                entity.HasOne(purchase => purchase.Guitar)
                    .WithMany()
                    .HasForeignKey(purchase => purchase.GuitarId)
                    .OnDelete(DeleteBehavior.ClientSetNull);
            });
    

Comments are closed.