2

How can I save data to junction table from controller?

public ActionResult Create(KreatorZamowienNabywca model)
{
      db.KreatoryZamowien.Add(model.KreatorZamowien);
      db.Nabywcy.Add(model.Nabywca);
      db.SaveChanges();
}

My database schema:

KreatorZamowien(Id, NumerZamowienia)  -------------------------------|
                                                                     |
NabywcaKreatorzamowien (KreatorZamowien_Id, Nabywca_Nabywca_Id)------|
                                                                     |
Nabywca(Nabywca_Id, Nazwa) ------------------------------------------|

KreatorZamowien.cs

public class KreatorZamowien
    {
        public int Id { get; set; }
        public int NumerZamowienia { get; set; }
        public virtual ICollection<Nabywca> Nabywcy { get; set; }
    }

Nabywca.cs

 public class Nabywca
    {
        public int NabywcaId { get; set; }
        public string Nazwa { get; set; }
        public virtual ICollection<KreatorZamowien> KreatoryZamowien { get; set; }
    }

Model containing 2 models to display them in View: KreatoryZamowienNabywca.cs

 public class KreatorZamowienNabywca
    {
        public KreatorZamowien KreatorZamowien { get; set; }
        public Nabywca Nabywca { get; set; }
    }
BartusZak
  • 1,041
  • 14
  • 21

1 Answers1

1

Just cross reference both objects.

public class KreatorZamowien
{
    public int Id { get; set; }
    public int NumerZamowienia { get; set; }
    public virtual ICollection<Nabywca> Nabywcy { get; set; } = new Hashset<Nabywca>();
}

public class Nabywca
{
    public int NabywcaId { get; set; }
    public string Nazwa { get; set; }
    public virtual ICollection<KreatorZamowien> KreatoryZamowien { get; set; } = new Hashset<KreatorZamowien>();
}

public ActionResult Create(KreatorZamowienNabywca model)
{
    model.KreatorZamowien.Nabywcy.Add(model.Nabywca);
    model.Nabywca.KreatoryZamowien.Add(model.KreatorZamowien);

    db.KreatoryZamowien.Add(model.KreatorZamowien);
    db.Nabywcy.Add(model.Nabywca);
    db.SaveChanges();
}
dropoutcoder
  • 2,627
  • 2
  • 14
  • 32