【发布时间】:2019-02-06 23:24:48
【问题描述】:
这是我的控制器类管理类的全部代码(实际上是教室,很抱歉造成混乱)
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
和
【问题讨论】: