Я создал метод в моем контексте данных, который сопоставлен с хранимой процедурой SQL. Этот метод используется в приложении ASP.NET и вызывается дважды в жизненном цикле страницы. Он возвращает один и тот же объект в обоих случаях (т.е. один и тот же первичный ключ).
После 1-го вызова вносятся некоторые изменения данных, поэтому при 2-м вызове хранимая процедура возвращает ту же запись, но с другими значениями свойств. Если я использую отладчик и SQL Profiler, я могу абсолютно точно проверить, что возвращаемая запись имеет тот же PK, но разные значения свойств между первым и вторым вызовами.
Однако при втором вызове объект, возвращаемый методом, идентичен объекту, возвращенному при первом вызове. Это похоже на то, как если бы LINQ запустил хранимую процедуру, но затем полностью проигнорировал результаты, решив вместо этого, что данные не могли измениться с момента первого запуска, поэтому он также может возвратить копию исходного объекта, если это произошло держаться!
Я экспериментировал с установкой ObjectTrackingEnabled объекта datacontext в false непосредственно перед вызовом моего метода, но это лишает меня возможности ссылаться на связанные объекты.
Вот код, который я использую для вызова метода:
Dim stl = _DataContext.GetMyStatus(SelectedUserID)
Dim st As MyStatus= stl.FirstOrDefault
Мне действительно нужно иметь возможность вызывать этот метод более одного раза в течение жизненного цикла страницы и чтобы он точно отражал текущее состояние базы данных, так как мне это сделать?