Я пытался убедиться в этом, выполнив следующий код, но экземпляры не были разрешены в один экземпляр. экземпляр
Код: Выделить всё
// Initially the table is empty
Employee emp1 = new Employee()
{
FirstName = "name1",
LastName = "name2",
Salary = 11111
};
context.Add(emp1);
context.SaveChanges();
Employee emp2 = (from e in context.Employees
where e.FirstName == "name1"
select e).SingleOrDefault();
// Identity resolution takes place
Console.WriteLine(emp1 == emp2); // True
Employee emp3 = (from e in context.Employees
where e.FirstName == "name1"
select e).AsNoTrackingWithIdentityResolution().SingleOrDefault();
// Expected to give True due to using AsNoTrackingWtihIdentityResolution()
Console.WriteLine(emp1 == emp3); // but found False
Employee emp4 = (from e in context.Employees
where e.FirstName == "name1"
select e).AsNoTrackingWithIdentityResolution().SingleOrDefault();
// Also no identity resolution happened
Console.WriteLine(emp4 == emp3); // False
Итак, теперь:
- Почему экземпляры, ссылающиеся на одну и ту же строку, не были разрешены в один экземпляр при использовании метода AsNoTrackingWithIdentityResolution() с их запросами, поскольку это одна из его ожидаемых функций?
- Почему существует автономный трекер, работающий в фоновом режиме при использовании этого метода, поэтому одной из целей использования этого метода было прекращение любого отслеживания?
Подробнее здесь: https://stackoverflow.com/questions/781 ... -correctly