我正在尝试并行运行三个数据库查询,但我不确定我是否做得正确。
我已经创建了三个函数,每个函数都对数据库进行查询。
我在我的代码中运行了三个任务:
我已经创建了三个函数,每个函数都对数据库进行查询。
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();
}
}
我在我的代码中运行了三个任务:
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.
我正在做的事情实际上是同时运行我的三个数据库查询吗?
编辑:
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();
}
}