public List <AccountInfo> GetAccountInfoList() { var accountInfoList = CacheEngine.Get(User); if (accountInfoList != null) { return(accountInfoList); } List <Account> accounts; List <MailSignatureData> signatures; List <MailAutoreplyData> autoreplies; using (var daoFactory = new DaoFactory()) { accounts = daoFactory.CreateAccountDao(Tenant, User) .GetAccounts(); var mailboxIds = accounts.Select(a => a.MailboxId).ToList(); signatures = daoFactory.CreateMailboxSignatureDao(Tenant, User) .GetSignatures(mailboxIds) .ConvertAll(s => new MailSignatureData(s.MailboxId, s.Tenant, s.Html, s.IsActive)) .ToList(); autoreplies = daoFactory.CreateMailboxAutoreplyDao(Tenant, User) .GetAutoreplies(mailboxIds) .ConvertAll( r => new MailAutoreplyData(r.MailboxId, r.Tenant, r.TurnOn, r.OnlyContacts, r.TurnOnToDate, r.FromDate, r.ToDate, r.Subject, r.Html)) .ToList(); } accountInfoList = ToAccountInfoList(accounts, signatures, autoreplies); CacheEngine.Set(User, accountInfoList); return(accountInfoList); }