Почему AsNoTrackingWithIdentityResolution() неправильно разрешает экземпляры?C#

Место общения программистов C#
Ответить
Anonymous
 Почему AsNoTrackingWithIdentityResolution() неправильно разрешает экземпляры?

Сообщение Anonymous »

Я прочитал статью о методе AsNoTrackingWithIdentityResolution() и о том, что это способ разрешения идентификаторов без отслеживания, и что при его использовании в фоновом режиме запускается средство отслеживания изменений, отличное от средства отслеживания контекста, для разрешения объектов, ссылающихся на одну и ту же строку, в один экземпляр.
Я пытался убедиться в этом, выполнив следующий код, но экземпляры не были разрешены в один экземпляр. экземпляр

Код: Выделить всё

// 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
Сравнение ссылок дало результат только в том случае, если два сравниваемых экземпляра (которые разрешены в один экземпляр) отслеживались средством отслеживания изменений контекста, в то время как другие экземпляры не были разрешены в один экземпляр. Я использую EF core 8.0.2
Итак, теперь:
  • Почему экземпляры, ссылающиеся на одну и ту же строку, не были разрешены в один экземпляр при использовании метода AsNoTrackingWithIdentityResolution() с их запросами, поскольку это одна из его ожидаемых функций?
  • Почему существует автономный трекер, работающий в фоновом режиме при использовании этого метода, поэтому одной из целей использования этого метода было прекращение любого отслеживания?


Подробнее здесь: https://stackoverflow.com/questions/781 ... -correctly
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»