Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 如何将修补程序与ASP.NET Core和Postman一起使用?_Asp.net Core_Odata - Fatal编程技术网

Asp.net core 如何将修补程序与ASP.NET Core和Postman一起使用?

Asp.net core 如何将修补程序与ASP.NET Core和Postman一起使用?,asp.net-core,odata,Asp.net Core,Odata,在《邮递员》上,我正试图向我的OData控制器发出补丁请求。我想我把它设置正确了,但它不工作。有人能帮忙吗 我的控制器如下所示: [授权] 公共类SMSNotesController:ODataController { 私有只读ApplicationDbContext\u appDbContext; 公共SMSNotesController(ApplicationDbContext appDbContext) { _appDbContext=appDbContext; } [启用查询] 公共异

在《邮递员》上,我正试图向我的OData控制器发出
补丁
请求。我想我把它设置正确了,但它不工作。有人能帮忙吗

我的控制器如下所示:

[授权]
公共类SMSNotesController:ODataController
{
私有只读ApplicationDbContext\u appDbContext;
公共SMSNotesController(ApplicationDbContext appDbContext)
{
_appDbContext=appDbContext;
}
[启用查询]
公共异步任务修补程序([FromODataUri]长noteID,[FromBody]增量note)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
var entity=await\u appDbContext.SMS\u Notes.FindAsync(noteID);
if(实体==null)
{
返回NotFound();
}
注:补丁(实体);
尝试
{
wait_appDbContext.saveChangesSync();
}
catch(DbUpdateConcurrencyException)
{
bool SMS\u NoteExists=wait\u appDbContext.SMS\u Notes.AnyAsync(a=>a.Id==noteID);
如果(!SMS_NoteExists)
{
返回NotFound();
}
其他的
{
投掷;
}
}
更新申报表(实体);
}
}
我已经在IModelConfiguration中注册了ODATA控制器

公共类ODataModelConfiguration:IModelConfiguration
{
公共无效应用(ODataModelBuilder builder,ApiVersion)
{
建筑商实体集(“SMSNotes”);
}
}
我错过了什么?我得到了404未被找到的回复。

在谷歌搜索了一番之后(没有任何关于这个的好文档),我拼凑了这个

这是使用ASP.NET Core 2.2和OData 7.5.0实现的

基本上:

  • 确保您提供的补丁参数带有括号中的参数
  • 在后面加一个斜杠
  • 提供API版本

[AcceptVerbs(“补丁”、“合并”)]
公共异步任务修补程序([FromODataUri]长密钥,增量修补程序)
{
如果(!ModelState.IsValid)
{
返回请求(ModelState);
}
var entity=await\u appDbContext.SMS\u Notes.FindAsync(key);
if(实体==null)
{
返回NotFound();
}
补丁。补丁(实体);
尝试
{
wait_appDbContext.saveChangesSync();
}
catch(DbUpdateConcurrencyException)
{
bool SMS\u NoteExists=wait\u appDbContext.SMS\u Notes.AnyAsync(a=>a.Id==key);
如果(!SMS_NoteExists)
{
返回NotFound();
}
其他的
{
投掷;
}
}
更新申报表(实体);
}
        [AcceptVerbs("PATCH", "MERGE")]
    public async Task<IActionResult> Patch([FromODataUri] long key, Delta<SMS_Note> patch)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        var entity = await _appDbContext.SMS_Notes.FindAsync(key);
        if (entity == null)
        {
            return NotFound();
        }
        patch.Patch(entity);
        try
        {
            await _appDbContext.SaveChangesAsync();
        }
        catch (DbUpdateConcurrencyException)
        {
            bool SMS_NoteExists = await _appDbContext.SMS_Notes.AnyAsync(a => a.Id == key);
            if (!SMS_NoteExists)
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return Updated(entity);
    }