如何更新记录而不在ADO.NET实体框架中再次选择该记录?

时间:2010-05-18 20:31:37

标签: c# entity-framework ado.net

大家好我正在做这样的事情 -

void update(ClasstoUpdate obj)//obj is already having values to update...
{
  var data= (from i in Entityobject.ClasstoUpdate 
            where obj.Id==i.Id
            select i).FirstorDefault();
  data.Name="SomeCoolName";
  EntityObject.SaveChanges();
}

我想在不再使用Id查询的情况下执行更新,是否有任何方法我只是将更新的对象传递给ADO.NET实体框架并更新它。很抱歉,如果我在这里遗漏了一些东西,但这是方式我一直在想它是否有一种简单的更新方式。感谢。

1 个答案:

答案 0 :(得分:6)

更新对象的简单方法是获取它,更改它,并提交您正在进行的更改。

另一种方法是attach the object,并告诉实体框架该对象处于修改状态。

第三种方法是通过构造一个SQL字符串来更新对象,该字符串直接在数据库中更新对象而不提取它。但是我不建议这样做。

附注:记得在函数中检查null。如果您知道FirstOrDefault的返回值永远不会为null,那么您应该使用First。您可能还想考虑使用Single而不是First