This is a wild guess, but I have an idea why your program behaves like this.
After you changed the age, you did not call any methods SaveChanges/ SaveChangesAsyncso that your changes were not reflected in the database and only local residents in your code.
, GetPerson1, , 25, , , .
GetPerson2 - GetPerson2 ToList, , GetPersons1 , , , GetPerson2 , EntityFramework , , , , , 25, p2_after null.
, :
:
public void OnGet()
{
Person p1 = GetPerson1();
Person p2 = GetPerson2();
p1.Age = 26;
p2.Age = 26;
_context.SaveChanges();
Person p1_after = GetPerson1();
Person p2_after = GetPerson2();
}
, p1_after p2_after ( null), .
:
public void OnGet()
{
Person p1 = GetPerson1();
Person p2 = GetPerson2();
p1.Age = 26;
p2.Age = 26;
Person p1_after = GetPerson1();
Person p2_after = GetPerson2();
}
public Person GetPerson1()
{
using(var context = new ...)
{
return context
.Persons
.Where(p => p.Age == 25)
.SingleOrDefault();
}
}
public Person GetPerson2()
{
using(var context = new ...)
{
return context
.Persons
.ToList()
.Where(p => p.Age == 25)
.SingleOrDefault();
}
}
, , p1_after p2_after ( p1 p2 ), , , .
AsNoTracking:
public void OnGet()
{
Person p1 = GetPerson1();
Person p2 = GetPerson2();
p1.Age = 26;
p2.Age = 26;
Person p1_after = GetPerson1();
Person p2_after = GetPerson2();
}
public Person GetPerson1()
{
return _context
.Persons
.AsNoTracking()
.Where(p => p.Age == 25)
.SingleOrDefault();
}
public Person GetPerson2()
{
return _context
.Persons
.ToList()
.AsNoTracking()
.Where(p => p.Age == 25)
.SingleOrDefault();
}
, , p1_after p2_after ( p1 p2 ), EF . -