我正在使用silverlight mvvm light框架。当我试图删除实体时,我获得的指定实体不包含在此EntitySet中。错误,但在我的数据库中,实体已经存在。
context.FormSection.Remove(formSection);
在此代码中,我收到错误。
这是我正在执行删除操作的代码
public void DeleteSectionQuestion(Form currentForm,CustomSectionTree selectedSectionQuestion, DeleteDelegate callback)
{
FormSection fs = new FormSection();
foreach (Question q in selectedSectionQuestion.Questions)
{
fs.FormID = currentForm.FormID;
fs.SectionID = selectedSectionQuestion.SectionID;
fs.QuestionID = q.QuestionID;
context.FormSections.Remove(fs);
}
SubmitOperation so = context.SubmitChanges();
so.Completed += (s, args) =>
{
if (so.HasError)
{
so.MarkErrorAsHandled();
callback.Invoke(false, so.Error);
}
else
callback.Invoke(true, null);
};
}
答案 0 :(得分:1)
请查看以下代码:
FormSection fs = new FormSection();
foreach (Question q in selectedSectionQuestion.Questions)
{
fs.FormID = currentForm.FormID;
fs.SectionID = selectedSectionQuestion.SectionID;
fs.QuestionID = q.QuestionID;
context.FormSections.Remove(fs);
}
您正在创建FormSection
的新实例,然后尝试多次删除它。 Entities
/ EntitySet
不起作用:上下文跟踪从数据库中检索的实体。这意味着如果您尝试删除不是来自数据库的实体实例的实体,则对于上下文是未知的。
您的viewmodel中应该有一个查询FormSections
的列表,您应该删除来自此列表的FormSection
实例,以便它们被上下文所知。