【问题标题】:Cannot update entity in Entity Framework 4 using POCO无法使用 POCO 更新实体框架 4 中的实体
【发布时间】:2010-10-30 14:55:26
【问题描述】:

我有 2 个表:项目和位置(一对多)。

我选择了一个位置并尝试更新它

实体从{Id=2, Name="name1",City="city1",Items=null} 变为{Id=2, Name="name1", City="city2",Items=null},我想保存更新。 基类的更新方法是:

        public virtual void Update(T entity)
        {
            Entities.Attach(entity);
            Context.ObjectStateManager
                   .ChangeObjectState(entity, System.Data.EntityState.Modified);
        }

我在其他表上进行了几次这样的更新,没有任何问题,但在这种情况下,我得到了"An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.",我真的不明白为什么。

【问题讨论】:

    标签: c# .net entity-framework entity-framework-4 poco


    【解决方案1】:

    您可以尝试指定:MergeOptions.NoTracking 作为上下文,看看是否能解决您的问题。

    另外,您可以尝试Context.ObjectStateManager.TryGetObjectStateEntry(entity, out stateEntry) 来查看对象是否存在以及是否可以更新。

    【讨论】:

    • stateEntry=null,似乎该对象不存在,也不应该存在,我只是想不通为什么我无法附加它
    • MergeOption.NoTracking 完成了这项工作。在哪些情况下使用 POCO 需要设置?
    • MSDN 描述了 NoTracking 和 POCO 之间的关系:msdn.microsoft.com/en-us/library/… 尽管它在主题上非常简洁。
    猜你喜欢
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多