Вот весь код моего класса контроллера для управления классами (на самом деле, класс, извините за путаницу)
using Microsoft.AspNet.OData;
using Microsoft.AspNet.OData.Routing;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using My.Data;
using My.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace My.Api.Controllers
{
public class ClassesController : ODataController
{
private readonly OygContext _context = new OygContext();
/// <summary>
/// GET: api/Classes
/// </summary>
/// <returns></returns>
[HttpGet]
[EnableQuery]
[ODataRoute("Classes", RouteName = "GetClasses")]
public async Task<ActionResult<IEnumerable<Class>>> GetClasses()
{
return Ok(await _context.Classes.ToListAsync());
}
/// <summary>
/// GET: api/Classes/5
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet()]
[ODataRoute("Classes({key})", RouteName = "GetClass")]
public async Task<ActionResult<Class>> GetClass([FromODataUri] Guid key)
{
var @class = await _context.Classes.FindAsync(key);
if (@class == null)
{
return NotFound();
}
return Ok(@class);
}
/// <summary>
/// POST: api/Classes
/// </summary>
/// <param name="class"></param>
/// <returns></returns>
[HttpPost]
[ODataRoute("Classes", RouteName = "PostClass")]
public IActionResult PostClass([FromBody] Class @class)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
@class.Id = Guid.NewGuid();
_context.Classes.Add(@class);
_context.SaveChangesAsync();
//return CreatedAtAction("GetClass", new { id = @class.Id }, @class);
return Created(@class);
}
/// <summary>
/// DELETE: api/Classes/5
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpDelete()]
[ODataRoute("Classes", RouteName = "DeleteClass")]
public async Task<ActionResult<Class>> DeleteClass(Guid id)
{
var @class = await _context.Classes.FindAsync(id);
if (@class == null)
{
return NotFound();
}
_context.Classes.Remove(@class);
await _context.SaveChangesAsync();
return Ok(@class);
}
private bool ClassExists(Guid id)
{
return _context.Classes.Any(e => e.Id == id);
}
}
}
Microsoftдокументация по OData Task , но это для OData .NET Standard, я думаю.А как насчет .NET Core и OData Core?И, главный вопрос, какую ссылку я должен добавить, чтобы использовать IHttpActionResult?Согласно другому прочтению я должен добавить пакет Microsoft.AspNet.WebApi.Core .В самом деле?Но у меня есть некоторые сомнения, потому что, когда я добавляю его в свое решение, я получаю конфликт разрешения с
Код серьезности Описание Проект Подавление строки файла Состояние Предупреждение NU1701 Пакет 'Microsoft.AspNet.WebApi.Core 5.2.7'было восстановлено с использованием .NETFramework, Version = v4.6.1' вместо целевой платформы проекта '.NETCoreApp, Version = v2.2'.Этот пакет может быть не полностью совместим с вашим проектом.Oyg.Api C: \ Users \ Public \ Projects \ oyg-server \ Api \ Oyg.Api.csproj 1
и