我正在使用ASP.net Core和OData nuget包来学习ODATA v4。尽管GET和POST操作没有问题,但是我不知道如何使用[FromODataUri]属性实现DELETE操作。
我看过多个示例,但始终坚持使用GET Action或不向Url显示对调用其实现的操作的使用权。
odata文档似乎只限于客户端查询,而不是服务器实现。
这是控制器的DELETE Action
[EnableQuery]
public async Task<IActionResult> Delete([FromODataUri] int Id)
{
var author = await context.Authors.FindAsync(Id);
context.Authors.Remove(author);
await context.SaveChangesAsync();
return StatusCode((int)HttpStatusCode.NoContent);
}
这是Author类
public class Author
{
public Author()
{
Books = new Collection<Book>();
}
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<Book> Books { get; set; }
}
当我调用此网址http://localhost:5000/odata/Author(5)删除Id = 5的作者时,Id变量的值设置为0,我希望是5。
谁能告诉我我做错了什么,并指出正确的方向?
更新:
我设法通过将[Key]从int更改为string来使DELETE工作。我想这是一种解决方法,但我真的很想知道如何使用int类型