Я пытаюсь запустить хранимую процедуру SQL асинхронным способом в C #.Я нашел два варианта, и я хотел бы понять разницу между ними:
Мне нужно подождать, прежде чем выйти из оператора using, иначе контекст будет удален:
private async Task<List<Currency>> Test1Async()
{
using (var dc = new LandmarkEntities())
{
return await Task.Run(() =>
{
return dc.get_currencies()
.Select(x => new Currency
{
ExchangeRate = x.exchange_rate,
Mnemonic = x.mnemonic,
})
.ToList();
});
}
}
Или я возвращаю работающую асинхронную задачу, содержащую контекст структуры сущности, который будет ожидаться где-то еще:
private Task<List<Currency>> Test2Async()
{
return Task.Run(() =>
{
using (var dc = new LandmarkEntities())
{
return dc
.get_currencies()
.Select(x => new Currency
{
ExchangeRate = x.exchange_rate,
Mnemonic = x.mnemonic,
})
.ToList();
}
});
}
Поскольку get_currencies()
является хранимой процедурой, .ToListAsync();
не может использоваться.