Mam do napisania sklep w ASP.NET MVC i chciałabym utworzyć kilka obiektów naraz (szczegółów zamówienia, które reprezentują produkt) w metodzie create (post) i zapisać je od razu do bazy. Generalnie utworzyłam tablicę, w której przechowuję informacje na temat produktów w koszyku ( za pomocą cookies - tablica cookies jest poprawnie tworzona), następnie tworzę zamówienie, a potem do "Zamowienia' chcę 'podczepić' obiekty 'SzczegółyZamowienia'. Zamówienie tworzy się bez problemów, obiekty nie tworzą się wcale. Ogólnie chcę utworzyć obiekty 'masowo' po raz pierwszy i nie wiem jak to do końca zrobić - i czy w ogóle można je tworzyć w ten sposób...
Metody kontrollera ZamowienieSzczegol:
public ActionResult Create()
{
var userId = (from user in db.Profile where user.Name.Contains(User.Identity.Name) select user.ID).First();
int oId = db.Zamowienia.Where(p => p.IdProfil == userId).Max(p => p.Id);
ViewBag.Id = oId;
ViewBag.Lista = ZwrocKoszyk();
return View();
}
public List<Gra> ZwrocKoszyk()
{
return (List<Gra>)Session["cart"];
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(int id) // parametr ten przekazuje id zamowienia do ktorego podepne szczegol zamowienia
{
if (ModelState.IsValid)
{
foreach (var item in (List<Gra>)Session["cart"])
{
ZamowienieSzczegol zamowienie = new ZamowienieSzczegol();
zamowienie.ZamowienieId = id;
zamowienie.GraId = item.ID;
zamowienie.Ilosc = 1;
db.ZamowienieSzczegoly.Add(zamowienie);
db.SaveChanges();
}
return RedirectToAction("Index", "Zamowienies");
}
return View();
}
Modele:
public class ZamowienieSzczegol
{
public int Id { get; set; }
public int ZamowienieId { get; set; }
[Required(ErrorMessage = "Pole jest wymagane!")]
public int GraId { get; set; }
[Required(ErrorMessage = "Pole jest wymagane!")]
public int Ilosc { get; set; }
public virtual Zamowienie Zamowienie { get; set; }
public virtual Gra Gra { get; set; }
}
public class Zamowienie
{
public int Id { get; set; }
public string IdProfil { get; set; }
public DateTime? Utworzono { get; set; }
public DateTime? Wyslano { get; set; }
public bool CzyWyslano { get; set; }
public decimal Cena { get; set; }
public virtual Profil Profil { get; set; }
}
Z góry dzięki za pomoc.