在 asp.net core 中更新的最佳方式是什么

伊斯兰教法

我正在看一些关于 asp.net core 的教程编程
在一些教程中,讲师使用此代码更新数据库中的数据

DataContext db = new DataContext();
var query = db.TblUsers.where(x => x.Id == 3).single();
query.Name = "Sami";
db.TblUsers.Attach(query);
db.Entry(query).state = EntityState.Modified;
db.SaveChanges();

但是一些讲师使用此代码更新数据库中的数据

DataContext db = new DataContext();
var query = db.TblUsers.where(x => x.Id == 3).single();
query.Name = "Sami";
db.Update(query);
db.SaveChanges();

事实上,我很困惑使用它们中的哪一个?因为两个代码都可以工作。
请告诉我这些代码之间到底有什么不同?

爱德华

对于您当前的代码,无需使用Attach第一种方式。如果您想通过从数据库中检索记录来更新模型,请使用第二种方式,这样更方便。

对于Attach,它会将图中的实体置于未更改状态,并将实体设置为Modifiedby db.Entry(query).state = EntityState.Modified,然后将更改query保存到数据库中。既然db.TblUsers.where(x => x.Id == 3).single()已经在跟踪了query,就没有必要使用Attach.
有两种类型的查询,trackingno-tracking如果您没有像no-tracking预期那样具体查询db.TblUsers.AsNoTracking().where(x => x.Id == 3).single(),则实体将跟踪哪个Unchanged状态。

对于db.Update(query);,它将开始跟踪状态中的给定实体,EntityState.Modified以便在调用 Microsoft.EntityFrameworkCore.DbContext.SaveChanges 时在数据库中更新它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章