Я читал везде, что правильный способ получить свежие данные из базы данных - создать новый экземпляр DbContext и отказаться от существующего. Хотя это может быть obvoius для некоторых сценариев, мне трудно реализовать это в более сложном сценарии. Тип рассматриваемого приложения - клиентское приложение, где контекст живет до тех пор, пока отображается форма/представление.DbContext кэшированные данные
Например, представьте, что мы добавляем некоторые данные типа A (это основные данные), а конкретный экземпляр типа A ссылается на объекты типа B и C (это данные, на которые ссылаются). Это означает, что на экране я мог бы загрузить список A, список B и список C. Давайте скажем, что список B получил некоторые изменения в сети, которые я хотел бы загрузить. Как я могу обновить список B, без необходимости извлечь все три списка из базы данных (потому что, если я уничтожу контекст, то есть то, что мне нужно будет делать?
obvoius mehod бы что-нибудь, как
Context.Set<B>().AsNoCache().ToList();
, которые мы не имеем ...
Я не вижу, как AsNoTracking можно использовать в описанном выше сценарии, но, возможно, я ничего не вижу. Если я не отслеживаю что-то, это означает, что он не привязан к контексту. Если он не привязан к контексту, он не может быть обновлен. В приведенном выше сценарии я обновляю данные. Итак, как вы точно это сделали? – Goran
@ Goran вы можете прикреплять объекты, которые не отслеживаются. Вы даже можете привязать объект к другому контексту к тому, который его материализовал. – qujck
Я знаю, что могу прикрепить его. Если я его поймаю, то он будет кэшироваться. Как я буду обновлять его, поскольку теперь его отслеживают, что является противоположным состоянием того, что вы предложили? – Goran