I am trying to run three database queries in parallel but I'm not sure that I am doing it correctly.
I have made three functions which each make a query to the database.
private static async Task<string> getAccountCodeAsync(string deviceId) { long deviceIdLong = long.Parse(deviceId); using (var db = new NetworksEntities()) { return db.Devices.Where(x => x.DeviceId == deviceIdLong) .Select(x => x.AccountCode) .FirstOrDefault(); } } private static async Task<string> getDeviceTypeAsync(string deviceId) { long deviceIdLong = long.Parse(deviceId); using (var db = new NetworksEntities()) { return db.Devices.Where(x => x.DeviceId == deviceIdLong) .Select(x => x.DeviceType) .FirstOrDefault() .DeviceType; } } private static async Task<string> getUserNameAsync(string userId) { int userIdInt; Int32.TryParse(userId, out userIdInt); using (var db = new NetworksEntities()) { return db.Users.Where(x => x.UserId == userIdInt) .Select(x => x.Email) .FirstOrDefault(); } } I then in my code I run the three tasks:
var TaskAccountCode = await getAccountCodeAsync(deviceId); var TaskDeviceType = await getDeviceTypeAsync(deviceId); var TaskUsername = await getUserNameAsync(userId); await Task.WhenAll(); // use the results from my three tasks to make a new insert into the db. Is what I am doing actually running my three db queries in parallel?
EDIT:
private static async Task<string> getAccountCodeAsync(string deviceId) { long deviceIdLong = long.Parse(deviceId); using (var db = new NetworksEntities()) { return db.Devices.Where(x => x.DeviceId == deviceIdLong) .Select(x => x.AccountCode) .FirstOrDefaultAsync(); } }