实体框架将更改保存到上下文导致错误

时间:2013-05-10 12:39:25

标签: c# collections entity-framework-5

我正在尝试将更改保存到包含两个项目的上下文中。一个是新的,另一个是旧的。我能够获得对象列表并保存单个项目没有问题,但是当我有两个项目并且打电话时保存它炸弹说:

存储更新,插入或删除语句会影响意外的行数(0)。自实体加载后,实体可能已被修改或删除。刷新ObjectStateManager条目。

我的代码片段。

谢谢。

    protected bool Save(params T[] entities)
    {
        foreach (T entity in entities)
        {
            bool b = context.Entry<T>(entity).Member<int>(string.Format("{0}Id", typeof(T).Name)).CurrentValue > 0;

            if (b)
            {
                context.Context.Attach(entity);
                context.Entry<T>(entity).State = System.Data.EntityState.Modified;
            }
            else
            {
                context.Context.Add(entity);
                context.Entry<T>(entity).State = System.Data.EntityState.Added;
            }
        }
        return context.SaveChanges() > 0;
    }

1 个答案:

答案 0 :(得分:0)

表上需要一个主键,也是自动生成的。