实体框架核心 - REST json合并补丁(部分更新)

时间:2017-01-05 12:07:45

标签: c# entity-framework rest entity-framework-core

EF Core支持Json Patch - RFC6902

https://github.com/aspnet/JsonPatch

我想在我的应用中添加对Json Merge Patch的支持 - RFC7396

我是实体框架的新手。

我试过以下,它工作正常,但想知道实现是否正常(模型验证是在过滤器中处理的,所以请忽略该部分):

char *a=new char[1000];
char str[1000];
sprintf(str,"Address : %p",a);
MessageBox(0, str, "MessageBox", MB_OK);

在存储库中:

[HttpPatch("{id}")]
public async Task<IActionResult> Update(int id, [FromBody] TEntity updatedEntity)
{
    TEntity entity = repository.GetById<TEntity>(id);
    if (entity == null)
    {
         return NotFound(new { message = $"{EntityName} does not exist!" });
    }
    repository.Update(entity, updatedEntity);
    await repository.SaveAsync();
    return NoContent();
}

1 个答案:

答案 0 :(得分:2)

使用实体类型是一种糟糕的模式,它反映了外部接口(您的api)中的内部模式(您的数据库)。

但是对于部分更新,您可以像这样使用动态:

dynamic changedData = new { /* props you wanna change */ };
DataContext.Entry(yourEntity).CurrentValues.SetValues(changedData);