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