获取指定的实体未包含在此EntitySet错误中

时间:2012-02-24 10:16:26

标签: c# silverlight-4.0 mvvm-light

我正在使用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);
        };
    }

1 个答案:

答案 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实例,以便它们被上下文所知。