C# — AsNoTracking()

Karim Samir
SimplifyInterview
Published in
Jul 7, 2024

Usage of AsNoTracking() is recommended when your query is meant for read operations. In these scenarios, you get back your entities but they are not tracked by your context.This ensures minimal memory usage and optimal performance

TEST :

Without AsNoTracking() :

IQueryable<Person> TestQueryable;
using (var db = new EFContext())
{
TestQueryable = db.Persons.Where(p => p.FirstName != "f3");
var b = TestQueryable.Count();

TestQueryable.First().LastName = "updated";
db.Persons.Update(TestQueryable.First());
db.SaveChanges();
}

Result: Firstname changed

With AsNoTracking() :

IQueryable<Person> TestQueryable;
using (var db = new EFContext())
{
TestQueryable = db.Persons.AsNoTracking().Where(p => p.FirstName != "f3");
var b = TestQueryable.Count();

TestQueryable.First().LastName = "updated";
db.Persons.Update(TestQueryable.First());
db.SaveChanges();
}

Result : Nothing Changed

--

--