如何在EF CF多层应用程序中更新分离的实体?

时间:2012-10-14 04:04:02

标签: entity-framework ef-code-first updating

我正在使用EF CF开发一个多层应用程序。我设法以这种方式删除了一个分离的实体:

       public void Delete(DbSet MySet, object Obj)
        {
            MySet.Attach(Obj);
            var Entry = this.Entry(Obj);
            Entry.State = EntityState.Deleted;
            this.SaveChanges();
        }

此方法在类I中定义,称为Adapter:DbContext。 问题是,在更新时,类似的代码不起作用:

 public void Update(DbSet MySet, object Obj)             
    {
        MySet.Attach(Obj);
        var Entry = this.Entry(Obj);
        Entry.State = EntityState.Modified;
        this.SaveChanges();
    }

这不会更新数据库,也不会抛出任何异常 我该如何更新分离的实体?

2 个答案:

答案 0 :(得分:2)

尝试检索对象并更新它,而不是附加对象 - 注意:我假设你的Id是Obj.Id

public void Update(DbSet MySet, object Obj)             
    {
        var objToUpdate = MySet.Find(Obj.Id);
        if (objToUpdate != null)
        {
        var Entry = this.Entry(objToUpdate );
        Entry.CurrentValues.SetValues(Obj)
        Entry.State = EntityState.Modified;
        this.SaveChanges();
        }
    }

答案 1 :(得分:0)

此代码工作得很好,错误在其他地方。 对不起过早的问题! 我没有删除,因为它有用