Odata v4 web api 2.2上下文当前未跟踪实体

本文关键字:跟踪 实体 上下文 v4 web api Odata | 更新日期: 2023-09-27 18:27:22

使用c#处理端点-尝试向用户添加角色(样板.NET用户表)试图确定更新关系表的正确方式。

var context =new WebClient.Default.OptimizedContextContainer(new Uri("service_hostUri"));
context.Format.UseJson();
User userToUpdate = context.User.ByKey(new Dictionary<string, object>() { { "userId", Guid.Parse("some_guid" } }).GetValue();
Role roleToAdd = context.Role.ByKey(new Dictionary<string, object> { { "roleId", Guid.Parse("some_guid" } }).GetValue();
userToUpdate.Roles.Add(roleToAdd);
context.UpdateObject(userToUpdate.Roles);
context.SaveChangesAsync();

代码在UpdateObject调用以更新用户角色时失败-"上下文当前未跟踪实体"-如果我取消了UpdateObject调用并仅使用saveChangesAsAsync,则没有错误,但未添加角色如何以这种方式向用户添加角色?

Odata v4 web api 2.2上下文当前未跟踪实体

对于作为集合的导航属性,您应该使用

AddToObject(userToUpdate,"Roles",RoleToAdd)

而不是

context.UpdateObject(userToUpdate.Roles);

并删除

userToUpdate.Roles.Add(roleToAdd);