这是我的控制器类用于管理类的全部代码(实际上是教室,对不起,抱歉)
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);
}
}
}
有关OData的Microsoft文档Task,但我猜这是针对OData .NET Standard的。 .NET Core和OData Core呢?而且,主要问题是,使用IHttpActionResult应该添加哪些参考?根据其他读物I should add Microsoft.AspNet.WebApi.Core package。真?但是我有一个疑问,因为当我将其添加到解决方案中时,就会与
发生解析冲突严重性代码描述项目文件行抑制状态 警告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
和
答案 0 :(得分:1)
使用IHttpActionResult应该添加什么参考?
对于IHttpActionResult
,它在.net核心odata下不存在,您应该使用ActionResult<Class>
。有关更多信息,请检查Migrate models and controllers。
根据其他阅读,我应该添加Microsoft.AspNet.WebApi.Core程序包。真的吗?
否,您的项目是.net核心,您不应引用Microsoft.AspNet.WebApi.Core
所解析的.NETFramework
。
对于HttpGet
错误,应删除System.Web.Http
。
有关将.net odata迁移到.net核心odata的更多详细信息,请查看上面的链接。