首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有相同键的对象已存在于ObjectStateManager中。

具有相同键的对象已存在于ObjectStateManager中。
EN

Stack Overflow用户
提问于 2011-12-27 21:46:45
回答 2查看 5.9K关注 0票数 0

任何人都可以帮助我处理这段代码,我收到了以下错误消息:

“/”应用程序中的

服务器错误。ObjectStateManager中已经存在具有相同键的对象。现有对象处于修改状态。只有当对象处于添加状态时,才能再次将其添加到ObjectStateManager。描述:在执行当前web请求时发生了未处理的异常。请查看堆栈跟踪以获得有关错误的更多信息,以及它起源于代码的位置。

异常详细信息: System.InvalidOperationException: ObjectStateManager中已经存在具有相同键的对象。现有对象处于修改状态。只有当对象处于添加状态时,才能再次将其添加到ObjectStateManager。

源错误:

代码语言:javascript
复制
Line 90:    public void AddToTwitter(Twitter twitter)
Line 91:    {
Line 92:        base.AddObject("Twitter", twitter);
Line 93:    }

源文件: C:\Users\dell\Documents\Visual 2010\Projects\MvcApplication3\MvcApplication3\Models\TwitterEntity.Designer.cs行: 92

守则是:

代码语言:javascript
复制
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();              
    }   
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-27 21:49:42

每次遍历循环时,都会尝试添加相同的Twitter实例。

您需要在每次迭代中(在循环体内)创建一个新实例。

票数 3
EN

Stack Overflow用户

发布于 2011-12-27 21:56:05

@Slaks不需要释放每个实例,他会遇到堆栈溢出错误,请原谅pun..LOL

代码语言:javascript
复制
Models.Twitter tw = new Models.Twitter(); 
// do code... 

// tw.Dispose()或tw =空,如果它不实现IDisposable

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8649625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档