2013-08-06 3 views
0

Я использую ASP.Net и Database-Migrations atm. Я добавляю некоторые функции для своих классов, чтобы получить дополнительные данные через объекты.ASP.net Linq To TSQL Caching

public IQueryable<CounterDiscussionThread> Answers 
{ 
    get 
    { 
     return db.CounterDiscussionThreads.Where(e => e.Parent == CounterDiscussionThreadId); 
    } 
} 

public CounterDiscussionThread LastPost 
{ 
    get 
    { 
     return db.CounterDiscussionThreads.OrderByDescending(e => e.TimePosted) 
              .First(e => e.CounterDiscussionThreadId == CounterDiscussionThreadId || e.Parent == CounterDiscussionThreadId); 
    } 
} 

Будет ли это сделать несколько запросов к БД, если я называю их несколько раз в том же потоке, или он будет автоматически кэширует результаты?

Дополнительная информация: дб база DbContext

Пример: <%# Item.LastPost.TimePosted.ToString("dd.MM.yyyy") %> и <%# Item.LastPost.TimePosted.ToString("t") %>. Будет ли результат в 1 или 2 запросах базы данных?

+0

Использует ли 'db' базу' DbContext'? –

+0

О, простите, да –

ответ

1

Я предполагаю, что вы используете Entity Framework, так как вы упоминаете миграции баз данных. Но, подобно Linq to SQL, контекст данных кэширует результаты и максимально использует их, чтобы предотвратить возврат к SQL, если они вызываются в одном экземпляре контекста данных.

Посмотрите на ваш пример, если все настроено правильно (то же самое DbContext, включено кэширование и т. Д.), Должен произойти только один запрос к базе данных.