我目前有一個使用 Entity Framework 3 的 .NET 4 Web API,我正在升級到 .NET 6/EF Core。我目前有一個看起來像這樣的 LINQ 查詢(并且作業正常):
[HttpGet]
public async Task<ActionResults> GetCars()
{
var x = from f in _context.CarMakes
group c in f.Make into m
select new { c.Key };
return Json(new
{
data = await x.ToListAsync()
};
}
這將回傳以下資料:
Chevy
Ford
Volvo
Toyota
等等。
我試圖在使用 EF Core 的 ASP.NET Core 6 Web API 中使用相同的查詢,但它失敗了,并引發了錯誤。
在 .NET 6 / EF Core 專案中,我有:
[HttpGet]
public async Task<ActionResults<IEnumerable<CarMakes>>>> GetCars()
{
var x = from f in _context.CarMakes
group c in f.Make into m
select new { c.Key };
return await x.ToListAsync();
}
我收到以下錯誤訊息:
無法隱式轉換型別 'System.Threading.Task.Task<System.Collections.GenericList
uj5u.com熱心網友回復:
我在對 Ef 核心進行單元測驗時遇到此錯誤。
試試這個擴展方法:
public static Task<List<TSource>> ToListAsyncSafe<TSource>(this IQueryable<TSource> source)
{
if (source == null)
throw new ArgumentNullException(nameof(source));
if (source is IAsyncEnumerable<TSource>)
return source.ToListAsync();
else
return Task.FromResult(source.ToList());
}
uj5u.com熱心網友回復:
不回傳 ActionResult,只回傳 IEnumerable。
uj5u.com熱心網友回復:
我得到了這個作業
[HttpGet]
public async Task<ActionResults<IEnumerable<CarMakes>>>> GetCars()
{
var x = from f in _context.CarMakes
group c in f.Make into m
select new { c.Key };
return Ok(await x.ToListAsync());
}
不是 100% 確定添加 OK() 給我結果,但它現在有效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/537949.html
標籤:C#实体框架核心
