我正在使用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 的类 I 中定义。问题是,在更新时,类似的代码不起作用:
public void Update(DbSet MySet, object Obj)
{
MySet.Attach(Obj);
var Entry = this.Entry(Obj);
Entry.State = EntityState.Modified;
this.SaveChanges();
}
这不会更新数据库,也不会引发任何异常我应该如何更新分离的实体?
不要附加对象,而是尝试检索对象并更新它 - 注意:我假设您的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();
}
}
这段代码工作得很好,错误在其他地方。对不起,过早的问题!无论如何我都不会删除,因为它很有用