Делаю с помощью Linq и BLToolkit различные запросы к базе (доработка программы Янус). Все в одном запросе не объединишь.
Получаются различные части в которых почти всегда можно глянуть SQL. Вроде немного разобрался как делать простые запросы.
Но не совсем понятно когда именно происходит реальное обращение к базе и выполняется запрос.
Есть достаточно многоступенчатый запрос чисто для подсчета количества, не хотелось бы его выполнять раньше времени. (До того как он будет полностью готов.)
Вот простой пример
protected IQueryable<IForumMessage> GetMessages(DbManager db)
{
return db.Messages(m => m.UserID == Config.Instance.SelfId);
}
using (DbManager db = ServiceProvider.CreateDBManager())
{
IQueryable<IForumMessage> forumMessages = GetMessages(db);
RepliesCount = forumMessages.Count();
UnreadCount = forumMessages.Count(im => !im.IsRead);
}
функция GetMessages вызывается для конструирования других запросов также.
Типа добавляем сортировку
IOrderedQueryable<IForumMessage> messages = forumMessages.OrderByDescending(m => m.Date);
Выполняется ли допустим здесь запрос именно на этапе вызова forumMessages.Count();?