Получение Указанная сущность не содержится в этой ошибке EntitySet - PullRequest
0 голосов
/ 24 февраля 2012

Я использую рамки lightlight 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 Ответ

1 голос
/ 24 февраля 2012

Посмотрите на следующий фрагмент вашего кода:

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 не работает таким образом: контекст отслеживает, какие объекты вы извлекли из базы данных . Это означает, что если вы попытаетесь удалить сущность, которая не является экземпляром сущности, полученной из базы данных, она неизвестна для контекста .

У вас должен быть список запрашиваемых FormSections в вашей модели представления, вы должны удалить экземпляры FormSection, которые приходят из этого списка, чтобы они были известны контексту.

...