Nano Hash - криптовалюты, майнинг, программирование

Обновление данных EF 4

У меня есть что-то вроде этого:

public class Customer
{
    public string Id { get; set; }
    public string Name { get; set; }
}

Я читаю с помощью LinQ следующим образом:

public IQueryable<Customer> GetCustomer()
{
    var result = from cust in _dbContext.Customers.AsNoTracking() select cust;
    return result;
}

В первый раз все работает нормально, но когда я добавил клиента в БД вручную, тот же клиент не отражается в этом запросе, он всегда возвращает старые записи.

Итак, как мне всегда получать обновленные данные о клиентах из БД?

Примечание. Я использую EF 4.


Ответы:


1

Проблема в вызове метода .AsNoTracking() Метод AsNotracking() представляет собой отдельный список данных, проверьте по ссылке http://msdn.microsoft.com/en-us/data/hh949853.aspx в пункте 5.1 объясняет это:

Если вы находитесь в сценарии только для чтения и хотите избежать накладных расходов на загрузку объектов в ObjectStateManager, вы можете создавать запросы «Без отслеживания». Отслеживание изменений можно отключить на уровне запроса.

Обратите внимание, что, отключая отслеживание изменений, вы фактически отключаете кеш объектов. Когда вы запрашиваете сущность, мы не можем пропустить материализацию, извлекая ранее материализованные результаты запроса из ObjectStateManager. Если вы неоднократно запрашиваете одни и те же объекты в одном и том же контексте, вы можете увидеть выигрыш в производительности от включения отслеживания изменений.

При выполнении запросов с использованием ObjectContext экземпляры ObjectQuery и ObjectSet запоминают MergeOption после его установки, а запросы, составленные на их основе, наследуют действующий MergeOption родительского запроса. При использовании DbContext отслеживание можно отключить, вызвав модификатор AsNoTracking() для DbSet.

удалите .AsNoTracking() для запроса ссылки

06.08.2013
  • даже после удаления .AsNoTracking() он все еще читает из кеша и не отображает дату в БД. 06.08.2013
  • Я использую приведенный выше код, и он работает хорошо. Это может зависеть от того, как вы вводите данные в контексте. При выполнении вставки вы используете _dbContext.Customers.Add (клиент).... или выполняете вставку через SQLComand? 06.08.2013
  • я вставил запись вручную в БД, так как мне обновить контекст? 06.08.2013
  • В моем контексте я использую context.Configuration.AutoDetectChangesEnabled со значением true. Проверь это. Если не решить, проверьте этот ответ: stackoverflow. ком/вопросы/5799737/ 06.08.2013
  • Привет, ты можешь помочь мне с этим? Мне нужно прочитать несколько столбцов, используя необработанный запрос sql var result = _dbContext.Database.SqlQuery‹string[]›(выберите ID, NAME, DB_FIELD из eis_hierarchy).ToList(); но не получить вывод должным образом 07.08.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..