db.Entry(x).State = EntityState.Modified或db.Set <x>()。AddOrUpdate(x)

时间:2017-09-29 11:56:52

标签: c# entity-framework api

我想知道哪一个是更新实体的最佳方式:

方法1. db.Entry(x).State = EntityState.Modified; AND

方法2. db.Set<X>().AddOrUpdate(x);

我总是使用方法1,直到上周因为某些原因,EF失去了我试图更新的实体的跟踪。有人提到手动重新附加实体会使系统容易受到攻击。

无论如何,哪个更好,每个的利弊是什么。谢谢。

1 个答案:

答案 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/

希望它有所帮助: - )