【问题标题】:How can I update a detached entity in EF CF multi-tier application?如何更新 EF CF 多层应用程序中的分离实体?
【发布时间】:2012-10-04 10:58:38
【问题描述】:

我正在使用 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();
    }

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

【问题讨论】:

  • 我认为:Entry.CurrentValues.SetValues(Obj);是多余的(您正在设置您的 Obj 实体以匹配您的 Obj 实体) - 但是它看起来应该可以工作。什么不工作?是否抛出异常?
  • 更糟糕...它什么也没做>.

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


【解决方案1】:

此代码运行良好,错误出现在其他地方。 对不起,过早的问题! 我不会删除,因为它很有用

【讨论】:

    【解决方案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();
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 2010-11-17
      • 2019-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多