我想知道哪一个是更新实体的最佳方式:
方法1. db.Entry(x).State = EntityState.Modified;
AND
方法2. db.Set<X>().AddOrUpdate(x);
我总是使用方法1,直到上周因为某些原因,EF失去了我试图更新的实体的跟踪。有人提到手动重新附加实体会使系统容易受到攻击。
无论如何,哪个更好,每个的利弊是什么。谢谢。
答案 0 :(得分:0)
1)。 db.Entry(x).State = EntityState.Modified;
<强>赞成强>
A)。 1 x查询数据库以进行更新
<强>缺点强>
A)。无法指定更改哪些属性
B)。视图必须包含每个属性
2)。的 db.Set()AddOrUpdate(X); 强>
扩展方法AddOrUpdate(此DbSet)允许您完全按照我想要的方式执行操作:如果不存在则插入,如果找到现有值则更新。 这种方法比前者快。
您也可以参考https://andrearegoli.wordpress.com/2015/11/17/entity-framework-update-without-select-part-1/
希望它有所帮助: - )