Khi sử dụng phương thức AsNoTracking
trong truy vấn LINQ trong Entity Framework, nên sử dụng nó trong mỗi bảng hoặc truy vấn để tắt theo dõi thay đổi cho toàn bộ truy vấn?Phạm vi của AsNoTracking trong truy vấn LINQ trong Entity Framework
1. Chống lại toàn bộ truy vấn
var query = (from t1 in db.Table1
from t2 in db.Table2.Where(o => t1.ConditionId == o.ConditionId)
select t1).AsNoTracking()
2. Chống mỗi bảng
var query = (from t1 in db.Table1.AsNoTracking()
from t2 in db.Table2.AsNoTracking().Where(o => t1.ConditionId == o.ConditionId)
select t1)
Ý định của tôi là để vô hiệu hóa theo dõi cho toàn bộ truy vấn thay đổi nhưng không muốn sử dụng nó trên mỗi bảng nếu nó không được yêu cầu.
MSDN đề cập đến một đối tượng truy vấn trong tài liệu hướng dẫn cho phương pháp này:
Phương pháp này hoạt động bằng cách gọi phương thức AsNoTracking của đối tượng truy vấn cơ bản. Nếu đối tượng truy vấn cơ bản không có phương thức AsNoTracking, thì việc gọi phương thức này sẽ không làm gì cả.
Đây là câu trả lời toàn diện. Cảm ơn. – Nick