Я создаю приложение связи (с использованием .NET 1.1 сердечника и MVC signalr/нокаута) и у меня есть следующий Pocos:EntityFramework кэширование старых устаревших данных, и я не знаю, как остановить это
номер пользователя поста postRevision
сообщений является контейнером postRevision, который для удобства имеет ссылку на последнюю версию
все остальное, как вы себе это. Очевидно, я опускаю много деталей.
У меня есть свойство с аватаром. Когда я обновляю аватар пользователя, я удаляю свой старый аватар и обновляюсь до нового. Затем в комнате посты (по-русски), у упомянутого пользователя больше нет дружеского аватара, теперь у них сломанный значок изображения. Я все еще разрабатываю, так что это не происходит в многопользовательском сценарии. Это только я, прыгающий с контроллера mvc, который меняет аватары на страницу signalr/knockout, на которой отображаются сообщения.
Когда я останавливаю и запускаю сервер, изображения фиксируются. Похоже, что структура сущности кэширует результаты и не обновляется.
в моем контроллере у меня есть этот код:
user.Avatar = imageId.ToString();
_context.Entry(user).State = EntityState.Modified;
await _context.SaveChangesAsync();
_context.Entry(user).State = EntityState.Detached;
return new JsonResult(new { status = "sucess" });
в моей ступице у меня есть этот фрагмент кода для извлечения страницы сообщений:
data = await _context.Posts
.Include(x=> x.LatestRevision)
.Include(x => x.LatestRevision.Blob)
.Include(x => x.LatestRevision.Creator)
.Where(x=> x.Room.Id == roomId
&& x.Id < currentPostId)
.OrderByDescending(x => x.Id)
.Take(_roomPageSize).ToListAsync();
Я не знаю, как рассказать signalr для обновления, тем более что эта страница не открыта, и теоретически эта страница выходит за рамки, поэтому контекст еще не создан. Это соответствующая часть моего Startup.cs
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>();
У вас тот же экземпляр DbContext? Если вы это сделаете, это, скорее всего, проблема. – Pawel
Где и когда вы создаете и размещаете '_context'? –
@GertArnold Я использую стандартный инжектор зависимости IoC с контекстом как параметр конструктора на контроллере. Это то, на что намекает файл startup.cs. Полагаю, у вас не было большого опыта работы с ядром .net. – Josiah