user1770609
user1770609

Reputation: 493

EF Saving only the 1st child entity

I'm trying to save an Event and EventDetails corresponding to that event.
It's saving the Event and the 1st EventDetail from the loop only.

public class Event
{
    [Key]
    public int CourseId { get; set; }
    ..
    public virtual ICollection<EventDetail> EventDetails{ get; set; }
}  

Controller:

[HttpPost]
public ActionResult Create(Event ev)
{
        if (ModelState.IsValid)
        {

            IQueryable<EventDetail> eventList = ..;

            FutureEvents fe = new FutureEvents();
            ICollection<FutureEvents> feCol = new Collection<FutureEvents>();

            foreach (EventDetail det in eventList)
            {
                fe.Name = ..;
                db.Entry(fe).State = EntityState.Added;
                feCol.Add(fe);
            }

            ev.EventDetails = feCol;
            db.Event.Add(ev);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(ev);
}

Upvotes: 0

Views: 37

Answers (2)

Lajos Arpad
Lajos Arpad

Reputation: 76814

You have created a single object then modified it in every iteration. Try this out:

[HttpPost]
public ActionResult Create(Event ev)
{
        if (ModelState.IsValid)
        {

            IQueryable<EventDetail> eventList = ..;

            ICollection<FutureEvents> feCol = new Collection<FutureEvents>();

            foreach (EventDetail det in eventList)
            {
                FutureEvents fe = new FutureEvents();
                fe.Name = ..;
                db.Entry(fe).State = EntityState.Added;
                feCol.Add(fe);
            }

            ev.EventDetails = feCol;
            db.Event.Add(ev);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(ev);
}

Upvotes: 1

vittore
vittore

Reputation: 17589

Move

FutureEvents fe = new FutureEvents();

within foreach loop. You created exactly one FutureEvents, so one is saved.

Upvotes: 1

Related Questions