我遇到路由問題,我想我知道答案,但我無法讓它作業。
namespace POTSwebAPI.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class ShippingschedulesController : ControllerBase
{
private readonly POTScontext _context;
public ShippingschedulesController(POTScontext context)
{
_context = context;
}
// GET: api/Shippingschedules
[HttpGet]
public async Task<ActionResult<IEnumerable<Shippingschedule>>> GetShippingschedules()
{
return await _context.Shippingschedules.ToListAsync();
}
// GET: api/Shippingschedules/ID
[HttpGet("{id:int}")]
public async Task<ActionResult<Shippingschedule>> GetShippingschedule(long? id)
{
ActionResult<Shippingschedule> Shippingschedule = await _context.Shippingschedules.FindAsync(id);
if (Shippingschedule == null)
{
return NotFound();
}
return Shippingschedule;
}
// GET: api/Shippingschedules/name
[HttpGet("{name}")]
public async Task<ActionResult<Shippingschedule>> GetShippingscheduleByName(string name)
{
ActionResult<Shippingschedule> Shippingschedule = await _context.Shippingschedules.FindAsync(name); //<-- I think the problem is here, as it's expecting an "long" not a "string"?
if (Shippingschedule == null)
{
return NotFound();
}
return Shippingschedule;
}
我認為問題出在 api/Shippingschedules/name方法上,這給了我這個錯誤:
呼叫“DbSet<>.Find”的位置 0 處的鍵值是“字串”型別,與“長?”的屬性型別不匹配。
FindAsync(name)期待 a而long不是 a string?
我想我需要用其他東西替換 FindAsync(),比如 where<> 或 SQL?一般來說,我是 LINQ 和 API 的新手。
也可能是我沒有定義映射嗎?在我的 Program.cs 中,我只有如圖所示
app.MapControllers();
謝謝
uj5u.com熱心網友回復:
我認為發生此錯誤是因為物體Shippingschedules的主鍵具有資料型別long,但您傳遞了string。
FindAsync() 方法將物件的主鍵作為輸入。您可以使用:
await _context.Shippingschedules.Where(x => x.name.Contains(name)).FirstOrDefault();
uj5u.com熱心網友回復:
這實際上是我認為的路線命名問題。除非您在其他地方執行此操作,否則按名稱獲取 ShippingSchedules 的路徑是“api/Shippingschedules/GetShippingscheduleByName”
端點“api/Shippingschedules/name”更接近于接受 long 的端點。
[HttpGet("{id:int}")]
public async Task<ActionResult<Shippingschedule>> GetShippingschedule(long? id)
{
ActionResult<Shippingschedule> Shippingschedule = await _context.Shippingschedules.FindAsync(id);
if (Shippingschedule == null)
{
return NotFound();
}
return Shippingschedule;
}
此外,該屬性似乎期望在那里有一個 int,而引數是一個 long。我認為這也可以澄清。
希望這可以解決它!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/463225.html
上一篇:asp.netlinq按id分組
