2011-10-18 69 views
0

使用ADO.Entity更新单个记录(具有特定ID)的单个字段的最佳做法是什么? 据我所知,你必须检索由ID整个对象,更新属性和调用的SaveChanges:ADO.Entity更新一个记录的单个字段而不检索整个记录

int id = ...; 
var db = new MyEntities(); 
var o = (from mo in db.myObject 
     where mo.id = idObject 
     select mo).First(); 
o.MyProperty = "some value"; 
db.SaveChanges(); 

但似乎有点开销不必检索整个对象,因为我不关心记录的值,因为我只是想设置一个属性,而不考虑值。

另一种选择是为此创建一个存储过程...

+0

你为什么认为检索整个记录是一个问题?这就是数据库系统所要做的。如果记录太大(包含多个BLOB等),那么你应该重新执行你的模式。 –

+0

我不同意这不是问题,因为如果是在应用程序工作期间进行数千次的行为,那么这是一种开销。无论大小如何,获取不使用的数据都没有意义。 – nogola

+0

见Donald Knuth教授,“我们应该忘记小效率,大约97%的时间:**过早优化是所有邪恶的根源**”[文章](http://en.wikipedia.org/wiki/Program_optimization) –

回答

2

回复:What is the best practise for updating a single field for one record (with specific ID) using ADO.Entity?

答:最好的做法是检索整个记录,更新一个或多个字段,然后店记录。 - 就像你在做什么一样。