我正在尝试保存与该事件相对应的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);
}
答案 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);
}