我正在使用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();
}
这不会更新数据库,也不会抛出任何异常 我该如何更新分离的实体?
答案 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)
此代码工作得很好,错误在其他地方。 对不起过早的问题! 我没有删除,因为它有用