I am trying to run 3 db queries in parallel but im not sure that I am doing it correctly.
I have made 3 functions which each make a query to the db.
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 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 3 tasks to make a new insert into the db.
Is what I am doing actually running my 3 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();
}
}