Что можно ожидать от продолжительности службы в приложении Razor Components (Server Side Blazor)?

Я знаю разницу между временем жизни сервисов Scoped, Singleton и Transient, но мои знания ограничены приложением MVC без сохранения состояния.

Корень путаницы начинается, когда я добавляю контекст EntityFramework с использованием AddScoped (время жизни каждого запроса), а затем все, что мне нужно сделать, чтобы обновить базу данных:

public void SaveUser()
{
    db.SaveChanges();
}

Это сильно отличается от приложения MVC, поскольку там объекты полностью отделяются от контекста, когда, например, они конвертируются в JSON и отправляются клиенту или от клиента к серверу (или, другими словами, другой запрос). сделан):

public void SaveUser(User updatedUser)
{
    var existing = db.Users.Find(updatedUser.Id);
    existing.Name = updatedUser.Name;
    db.SaveChanges();
    // I can also use something like Attach() or Update() instead.
}

Это возможно в Razor Components, потому что все объекты (которые я связал с пользовательским интерфейсом) все еще отслеживаются контекстом, с сохранением состояния, через SignalR, Контекст EF, кажется, "никогда" не удаляется.

В приложении MVC контекст EntityFramework воссоздается перед каждым запросом и удаляется после (как вы можете ожидать от AddScoped).

Итак, у меня есть три вопроса:

  1. Что именно является "запрос" в Razor Components ака. Server Side Blazor (с точки зрения срока службы)?
  2. Как насчет клиентов, потерявших соединение и подключившихся после?
  3. Есть ли ситуации, когда мне нужно проверить, отслеживается ли объект "по-прежнему" контекстом, или такого рода проблема никогда не возникает?

0 ответов

Другие вопросы по тегам