如何使用实体框架更新对象集合?

时间:2011-08-15 12:06:19

标签: c# entity-framework asp.net-mvc-3

我有两个实体:问题 Multiple_Choice_Question 。 Question对象具有Multiple_Choice_Question对象的列表。要编辑这些对象,我将Question和Multiple_Choice_Question对象列表传递给在我的asp.net网站上显示它们的ViewModel。

在[HttpPost]上,我从DBContext获取问题对象,并使用ViewModel中的新属性更改旧属性。然后是DBContext.SaveChanges();更新。

要更新Multiple_Choice_Question列表,请执行以下操作:

                foreach (MCQ newmcqq in model.MCQ)
            {
                Multiple_Choice_Question item = new Multiple_Choice_Question();
                item = db.Multiple_Choice_Question.First(x => x.mcq_id == newmcqq.mcq_id);
                item.mcq_id = newmcqq.mcq_id;
                item.choice_number = newmcqq.choice_number.ToString();
                item.choice_wording = newmcqq.choice_wording;
                item.help_text = newmcqq.help_text;
            }
db.SaveChanges();

有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

使用LINQ循环和更新单个项目是唯一的方法。它实际上不适用于批处理INSERTUPDATE

你在循环之外调用SaveChanges(),所以这很好。这仍然只能扩展到某一点。你最终会遇到性能问题。