关于任务和ActionResult的OData.NET核心问题

关于任务和ActionResult的OData.NET核心问题,odata,asp.net-core-webapi,Odata,Asp.net Core Webapi,这是我的控制器类管理类的全部代码(实际上是教室,很抱歉混淆) 使用Microsoft.AspNet.OData; 使用Microsoft.AspNet.OData.Routing; 使用Microsoft.AspNetCore.Mvc; 使用Microsoft.EntityFrameworkCore; 使用我的数据; 使用我的.Domain; 使用制度; 使用System.Collections.Generic; 使用System.Linq; 使用System.Threading.Tasks;

这是我的控制器类管理类的全部代码(实际上是教室,很抱歉混淆)

使用Microsoft.AspNet.OData;
使用Microsoft.AspNet.OData.Routing;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.EntityFrameworkCore;
使用我的数据;
使用我的.Domain;
使用制度;
使用System.Collections.Generic;
使用System.Linq;
使用System.Threading.Tasks;
命名空间My.Api.Controllers
{
公共类类控制器:ODataController
{
私有只读OygContext_context=new OygContext();
/// 
///获取:api/类
/// 
///  
[HttpGet]
[启用查询]
[ODataRoute(“类”,RouteName=“GetClasses”)]
公共异步任务,但我想这是针对OData.NET标准的。关于.NET Core和OData Core呢?以及,主要问题,我应该添加什么引用来使用IHttpActionResult?根据其他一些阅读。真的吗?但我有一些疑问,因为当我将其添加到解决方案中时,我得到了与之冲突的解决方案

严重性代码说明项目文件行抑制状态 警告NU1701程序包“Microsoft.AspNet.WebApi.Core 5.2.7”被删除 已使用“.NETFramework,Version=v4.6.1”而不是项目还原 目标框架“.NETCoreApp,版本=v2.2”。此包可能不可用 完全兼容您的 project.Oyg.Api C:\Users\Public\Projects\Oyg server\Api\Oyg.Api.csproj 1

我应该添加什么引用来使用IHttpActionResult

对于
IHttpActionResult
,它在.net核心odata下不存在,您应该使用
ActionResult
。有关详细信息,请检查

根据其他阅读资料,我应该添加Microsoft.AspNet.WebApi.Core包。真的吗

不,您的项目是.net core,您不应该引用由
.NETFramework
解析的
Microsoft.AspNet.WebApi.core

对于
HttpGet
错误,您应该删除
System.Web.Http

有关将.net odata迁移到.net核心odata的更多详细信息,请查看上面的链接

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);
    }
}
}