gpt4 book ai didi

Azure 应用服务 - 从表 Controller 更新对象

转载 作者:行者123 更新时间:2023-12-03 05:41:41 24 4
gpt4 key购买 nike

在 Azure 应用服务移动后端服务中,REST API 请求由 TableController 实现处理。这些方法可以通过客户端SDK中对应的方法来调用。因此,我可以查询特定实体并从客户端更新其状态。

但是如何在服务器端或同一 Controller 内调用它们?例如,如果我想查询特定的 todoItem 并通过此处的某些自定义方法更新其状态,例如

  1. 使用 LookUp(id) 获取项目
  2. 更新状态
  3. 使用 UpdateAsync(id, item)

这里我不知道如何创建TodoItem的Delta对象来调用UpdateAsync(id, patch)方法。

 public class TodoItemController : TableController<TodoItem>
{
protected override void Initialize(HttpControllerContext controllerContext)
{
base.Initialize(controllerContext);
initrackerserviceContext context = new initrackerserviceContext();
DomainManager = new EntityDomainManager<TodoItem>(context, Request);
}

// GET tables/TodoItem
public IQueryable<TodoItem> GetAllTodoItems()
{
return Query();
}

// GET tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public SingleResult<TodoItem> GetTodoItem(string id)
{
return Lookup(id);
}

// PATCH tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public Task<TodoItem> PatchTodoItem(string id, Delta<TodoItem> patch)
{
return UpdateAsync(id, patch);
}

// POST tables/TodoItem
public async Task<IHttpActionResult> PostTodoItem(TodoItem item)
{
TodoItem current = await InsertAsync(item);
return CreatedAtRoute("Tables", new { id = current.Id }, current);
}

// DELETE tables/TodoItem/48D68C86-6EA6-4C25-AA33-223FC9A27959
public Task DeleteTodoItem(string id)
{
return DeleteAsync(id);
}
}

最佳答案

只需使用标准 Entity Framework 机制。例如,要查找并更新具有状态的记录,您只需使用上下文即可:

var item = await context.TodoItems.Where(i => i.Id.Equals(myId)).FirstOrDefaultAsync<TodoItem>();
if (item != null) {
item.Complete = true;
context.Entry(item).State = EntityState.Modified;
await context.SaveChangesAsync();
}

我的 EF 编码并不是最好的临时编码,但您应该明白我的想法。只需执行 Entity Framework 的操作即可。

关于Azure 应用服务 - 从表 Controller 更新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com