Объект с таким же ключом уже существует в ObjectStateManager - PullRequest
0 голосов
/ 28 декабря 2011

Кто-нибудь может помочь мне с этим кодом. Я получаю это сообщение об ошибке:

Ошибка сервера в приложении '/'.Объект с таким же ключом уже существует в ObjectStateManager.Существующий объект находится в измененном состоянии.Объект может быть добавлен в ObjectStateManager снова, только если он находится в добавленном состоянии.Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: объект с тем же ключом уже существует в ObjectStateManager.Существующий объект находится в измененном состоянии.Объект может быть добавлен в ObjectStateManager снова, только если он находится в добавленном состоянии.

Ошибка источника:

Line 90:    public void AddToTwitter(Twitter twitter)
Line 91:    {
Line 92:        base.AddObject("Twitter", twitter);
Line 93:    }

Исходный файл: C: \ Users \ dell \ Documents\ Visual Studio 2010 \ Projects \ MvcApplication3 \ MvcApplication3 \ Models \ TwitterEntity.Designer.cs Строка: 92

код:

Models.TwitterEntities entity = new Models.TwitterEntities();
Models.Twitter tw = new Models.Twitter();

foreach (Hashtable item in (ArrayList)hs["results"])
{                
    foreach (DictionaryEntry subitem in item)
    {
        if (subitem.Key.ToString() == "from_user")
        {
            tw.from_user = (string)subitem.Value;
            Response.Write("<br>" + (string)subitem.Value);
            entity.AddToTwitter(tw);
        }
        if (subitem.Key.ToString() == "to_user")
        {
            tw.to_user = (string)subitem.Value;
            Response.Write("<br>" + (string)subitem.Value);
            entity.AddToTwitter(tw);
        }
        entity.SaveChanges();              
    }   
}

Ответы [ 2 ]

3 голосов
/ 28 декабря 2011

Вы пытаетесь добавить один и тот же экземпляр Twitter каждый раз, когда проходите цикл.

Вам нужно создавать новый экземпляр в каждой итерации (внутри тела цикла).

0 голосов
/ 28 декабря 2011

@ Слаксу не нужно будет освобождать каждый из экземпляров, а также он столкнется с ошибкой переполнения стека, простите за каламбур .. LOL

Models.Twitter tw = new Models.Twitter(); 
// do code... 

// tw.Dispose () или tw =ноль, если он не реализует IDisposable

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...