1

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

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

这个方法定义在一个名为 Adapter:DbContext 的类中。问题是,更新时,类似的代码不起作用:

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

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

4

2 回答 2

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();
        }
    }
于 2012-10-14T04:23:23.947 回答
0

这段代码工作得很好,错误在其他地方。对不起,过早的问题!我无论如何都不会删除,因为它很有用

于 2012-10-14T04:35:24.980 回答