Simple retrieving sessionId rows from indexed SQL column is slow
I think the bottleneck is in IQueryable&lt;Model.Tracker.MilestonesInSession&gt; GetAll() because it looks like you are executing that query into memory by creating a new Model.Tracker.MilestonesInSession
Try this:

public IQueryable&lt;MilestonesInSession&gt; GetSpecifiedMilestonesInSessionObjects(long sessionId) 
{
    var allMilestones = from milestoneSession in
                        _dataContext.Repository&lt;Linq.TrackerMilestonesInSession&gt;() 
                        select new { 
                                     MilestoneId = milestoneSession.MilestoneId, 
                                     CreatedDate = milestoneSession.CreatedDate, 
                                     SessionId = milestoneSession.SessionId, 
                                     ProductId = milestoneSession.ProductId, 
                                     TrackerId = milestoneSession.TrackerId, 
                                     StatusId = milestoneSession.StatusId, 
                                     BankId = milestoneSession.BankId 
                                   }; 
      var query = from m in allMilestones
                  where m.SessionId == sessionId 
                  select new Model.Tracker.MilestonesInSession 
                  {
                    MilestoneId = m.MilestoneId, 
                    CreatedDate = m.CreatedDate, 
                    SessionId = m.SessionId, 
                    ProductId = m.ProductId, 
                    TrackerId = m.TrackerId, 
                    StatusId = m.StatusId, 
                    BankId = m.BankId 
                  }; 
      return query; 
}