Odata 使用ODate创建、更新、删除$ref

Odata 使用ODate创建、更新、删除$ref,odata,asp.net-core-webapi,Odata,Asp.net Core Webapi,在阅读了几篇教程之后,我对如何使用OData实现RESTAPI有了一个很好的想法。我可以创建、更新和删除实体,并且可以将现有实体链接到实体集合。但如果我的实体只包含另一个实体呢 例如,假设我有一门课程 public class Course { [Key] public Guid Id { get; set; } public ICollection<Student> Students { get; set; } public Teacher Teac

在阅读了几篇教程之后,我对如何使用OData实现RESTAPI有了一个很好的想法。我可以创建、更新和删除实体,并且可以将现有实体链接到实体集合。但如果我的实体只包含另一个实体呢

例如,假设我有一门课程

public class Course
{
    [Key]
    public Guid Id { get; set; }
    public ICollection<Student> Students { get; set; }
    public Teacher Teacher { get; set; }
    public Location Location { get; set; }
}

public class Teacher
{
    [Key]
    public Guid Id { get; set; }
    public ICollection<Location> Location { get; set; }
}
这更多的是关于HttpPut和HttpDelete的,我有些怀疑,因为我没有位置的集合。所以相关的键在这里没有意义。我应该这样写我的路线吗:

    [HttpPut]
    [ODataRoute("Course({key})/Location/$ref")]

    [HttpDelete]
    [ODataRoute("Course({key})/Location/$ref")]
对吗

编辑

现在我的代码里有这个

    [HttpPut]
    [ODataRoute("Course({key})/Location/$ref")]
    public async Task<IActionResult> UpdateLinkToLocation([FromODataUri] Guid key, [FromBody] Uri link)
    {
        throw new NotImplementedException();
    }

    [HttpDelete]
    [ODataRoute("Course({key})/Location/$ref")]
    public async Task<IActionResult> DeleteLinkToLocation([FromODataUri] Guid key)
    {
        throw new NotImplementedException();
    }
[HttpPut]
[ODataRoute(“Course({key})/Location/$ref”)]
公共异步任务UpdateLink目录([FromODataUri]Guid键,[FromBody]Uri链接)
{
抛出新的NotImplementedException();
}
[HttpDelete]
[ODataRoute(“Course({key})/Location/$ref”)]
公共异步任务DeleteLinkToLocation([FromODataUri]Guid密钥)
{
抛出新的NotImplementedException();
}
我觉得很奇怪,能够删除而不必提供我的位置的关键。但实际上为什么不呢,我只有一个位置,如果我想删除它,让我们这样做。我只需要确认一下

    [HttpPut]
    [ODataRoute("Course({key})/Location/$ref")]
    public async Task<IActionResult> UpdateLinkToLocation([FromODataUri] Guid key, [FromBody] Uri link)
    {
        throw new NotImplementedException();
    }

    [HttpDelete]
    [ODataRoute("Course({key})/Location/$ref")]
    public async Task<IActionResult> DeleteLinkToLocation([FromODataUri] Guid key)
    {
        throw new NotImplementedException();
    }