关于任务和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);
}
}
}