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

Vis*_*hal 4 c# ado.net entity-framework

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

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();
}
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 6

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

另一种方法是附加对象,并告诉实体框架该对象处于修改状态.

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

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