Может ли одноэлементная служба использовать (scoped) dbContext? - PullRequest
0 голосов
/ 25 ноября 2018

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

Я думал зарегистрировать службу Singleton, которая будет получать некоторые значения из базы данных и сохранять их в течение всей сессии.Так что сервис требует моего DbContext.

Интерфейс прост:

interface IPhrases
{
    Task SetPhrasesForLanguage(int LanguageID);
}

Класс обслуживания аналогичен следующему:

public class LangPhrases : IPhrases
{
    private OVContext _context;
    private int _LanguageID;
    public string PageHeading { get; set; }

    public LangPhrases(OVContext context, int LanguageID)
    {
        _context = context;
        _LanguageID = LanguageID;
    }

    public Task SetPhrasesForLanguage(int LanguageID)
    {
        IQueryable<clsPhrases> lPhrases = (from p in _context.Phrases
                   where p.LangaugeId == LanguageID
                   select new clsPhrases()
                   {
                       Phrase=p.Phrase,
                       VarID=p.VarId
                   });
        //logic to get PageHeading from the lPhrases collection
    }
}

Будет ли передача DbContext с ограничениями в одноэлементную службу сохранить DbContext впамять между запросами?

Чтобы уточнить: я ищу способ получить эти значения и сохранить их для сеанса, БЕЗ сохранения DbContext в памяти.

1 Ответ

0 голосов
/ 26 ноября 2018

Для кэширования значений следует использовать службу с запросом и IMemoryCache .Если вы не нашли значения в кэше, прочитайте их из DbContext, который также должен быть Request-Scoped.

...