我的存盤庫中有以下 LINQ 查詢,其行為符合預期:
public ICollection<Address> GetManufacterAddressesFromProductId(Guid productId)
{
return Context.Products
.First(product => product.Id == productId)
.Manufacturer
.Addresses;
}
如何使此呼叫異步?這是我目前的解決方案,看起來……太長了?
public async Task<ICollection<Address>> GetManufacterAddressesFromProductIdAsync(Guid productId)
{
var product = await Context.Products.FirstAsync(x => x.Id == productId);
var manufacturerId = product.ManufacturerId;
return await Context.ManufacturerAddresses.Where(x => x.ManufacturerId == manufacturerId ).ToListAsync();
}
讓我覺得這并沒有真正正確地做事,因為無論如何它都必須等待第一個呼叫完成 - 有點失敗了?
uj5u.com熱心網友回復:
通過以下方式:
public Task<ICollection<Address>> GetManufacterAddressesFromProductId(Guid productId)
{
return Context.Products
.Where(product => product.Id == productId)
.Select(product => product.Manufacturer.Addresses)
.FirstAsync();
}
另請注意,同步版本無效。應該:
public ICollection<Address> GetManufacterAddressesFromProductId(Guid productId)
{
return Context.Products
.Where(product => product.Id == productId)
.Select(product => product.Manufacturer.Addresses)
.First();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437407.html
