EF Code First: коллекция была изменена - PullRequest
1 голос
/ 27 марта 2012

Получение этой ошибки при попытке добавить элемент в мои репозитории / контекст:

Коллекция была изменена.Возможно, операция инвентаризации не выполнена.

Что я пытаюсь сделать

Campaign c = Campaignrepository.FindById(id);
if (c.LandingPage == null)
{
    c.LandingPage = new Page() { Campaign = c, CampaignID = c.Campaignid };
    PageRepository.Add(c.LandingPage);
}
if (c.RedeemPage == null)
{
    c.RedeemPage = new RedeemPage() { Campaign = c, CampaignID = c.Campaignid };
    PageRepository.Add(c.RedeemPage);
}

Метод добавления в репозиторий:

public void Add(Page p)
{
    pages.Add(p);
    context.SaveChanges();
}

Обновление: все та же ошибка.

После применения предложений:

public ActionResult Edit(int id)
{
    Campaign c = Campaignrepository.FindById(id);
    Campaign newreferenceC = Campaignrepository.FindById(id);
    if (c.LandingPage == null)
    {
        c.LandingPage = new Page() { Campaign = newreferenceC, CampaignID = newreferenceC.Campaignid };
        PageRepository.Add(c.LandingPage);
    }
    if (c.RedeemPage == null)
    {
        c.RedeemPage = new RedeemPage() { Campaign = newreferenceC, CampaignID = newreferenceC.Campaignid };
        PageRepository.Add(c.RedeemPage);
    }
    return View("Edit", Campaignrepository.FindById(id));
}

1 Ответ

0 голосов
/ 28 марта 2012

Удалось исправить это с помощью:

        Page landingPage = new Page(c);
        RedeemPage redeemPage = new RedeemPage(c);
        PageRepository.Add(landingPage);
        PageRepository.Add(redeemPage);
        c.LandingPage = landingPage;
        c.RedeemPage = redeemPage;
        Campaignrepository.Update(c);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...