EF仅保存第一个子实体

时间:2013-07-29 03:35:33

标签: asp.net-mvc entity-framework

我正在尝试保存与该事件相对应的Event和EventDetails 它仅从循环中保存事件和第一个 EventDetail

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

控制器:

[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);
}

2 个答案:

答案 0 :(得分:1)

移动

FutureEvents fe = new FutureEvents();

foreach循环中。您只创建了一个FutureEvents,因此保存了一个。

答案 1 :(得分:1)

您已创建单个对象,然后在每次迭代中对其进行修改。试试这个:

[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);
}