我对.AsNoTracking()
扩展方法有疑问,因为这一切都很新,也很令人困惑。
我正在为一个网站使用每个请求上下文。
我的许多实体不会改变,因此不需要被跟踪,但是我有以下场景,在这种情况下我不确定会发生什么,甚至是否在这种情况下有所区别。
以下示例是我目前正在进行的操作:
context.Set<User>().AsNoTracking()
// Step 1) Get user
context.Set<User>()
// Step 2) Update user
这与上面相同,但是从步骤1中删除了.AsNoTracking()
:
context.Set<User>();
// Step 1) Get user
context.Set<User>()
// Step 2) Update user
步骤1和2使用相同的上下文,但发生的时间不同。我无法确定是否有任何区别。由于步骤2是更新,我猜两者都将在任何情况下两次访问数据库。
有人能告诉我区别是什么吗?