async Task <PersonInfo> GetInfoAsync(Person person) { PersonInfo personInfo = new PersonInfo(); int id = person.BusinessEntityID; //List<Task<PersonInfo>> tasks = new List<Task<PersonInfo>>(); //tasks.Add(Task.Run(() => dal.GetPersonOpts<Address>(id))); //tasks.Add(Task.Run(() => dal.GetPersonOpts<BusinessEntityAddress>(id))); //tasks.Add(Task.Run(() => dal.GetPersonOpts<Password>(id))); //tasks.Add(Task.Run(() => dal.GetPersonOpts<Person>(id))); //tasks.Add(Task.Run(() => dal.GetPersonOpts<PersonPhone>(id))); //PersonInfo[] personInfos = await Task.WhenAll(tasks); personInfo.Address = await dal.GetPersonOptsAsync <Address>(id); personInfo.BusinessEntityAddress = await dal.GetPersonOptsAsync <BusinessEntityAddress>(id); personInfo.Password = await dal.GetPersonOptsAsync <Password>(id); personInfo.Person = await dal.GetPersonOptsAsync <Person>(id); personInfo.PersonPhone = await dal.GetPersonOptsAsync <PersonPhone>(id); return(personInfo); }