// Get all the current documents public DocumentsViewModel GetDocumentsViewModel() // 7000ms { // 1000ms var documentIds = Data.Documents .Where(x => x.Archived == false).Select(x => new { x.DocumentId }); var documentsViewModel = new DocumentsViewModel(); foreach (var documentId in documentIds) { // 6,516ms documentsViewModel .Documents .Add( GetDocumentViewModel(documentId.DocumentId.GetValueOrDefault()) ); // Will run at least a couple of queries on every non-archived doc in the system! } return(documentsViewModel); }
// Get all the current documents :: 1.062ms public DocumentsViewModel GetDocumentsViewModel() { // prefetch all documents var documents = Data.Documents;//1sec var documentIds = documents .Where(x => x.Archived == false).Select(x => new { x.DocumentId }); // create doc-view model given docs already got ... var documentsViewModel = new DocumentsViewModel(); foreach (var id in documentIds)// 78ms { var documentId = id.DocumentId.GetValueOrDefault(); // get document view model using pre-fetched documents var documentViewModel = GetDocumentViewModel(documentId, documents); documentsViewModel.Documents.Add(documentViewModel); } return(documentsViewModel); }