【发布时间】:2017-04-22 20:40:32
【问题描述】:
在寻找通过 EF 执行 CRUD 操作的最佳实践时,我注意到强烈建议在更新实体之前使用 Attach() 或 Find() 方法。它运行良好,根据 EF 文档,这些方法将实体获取到对我来说非常清楚的上下文。但是下面的代码让我很困惑
public void Update(object entity)
{
Record record = new Record() {
id = 1,
value = 5
};
using (SomeContext ctx = new SomeContext())
{
ctx.Entry(record).State = EntityState.Modified;
ctx.SaveChanges();
}
}
假设我们在数据库中有一条 id = 1 的记录。在这种情况下,上面的代码将更新记录(将值设置为 5)。问题是它为什么有效?那我为什么要使用Attach()?。据我了解,该记录并未以任何方式附加到上下文中。我阅读了this book 和the tutorial 的相关章节,但他们使用2-query-approach。我也上网了,但没有找到我的问题的答案。请帮我解释或一些好的数学。
【问题讨论】:
标签: c# entity-framework crud