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

C# Odata v4 web api 2.2上下文当前未跟踪该实体,c#,asp.net-web-api,odata,C#,Asp.net Web Api,Odata,使用c#处理端点-尝试向用户添加角色(样板.NET用户表) 正在尝试确定更新关系表的正确方法 var context =new WebClient.Default.OptimizedContextContainer(new Uri("service_hostUri")); context.Format.UseJson(); User userToUpdate = context.User.ByKey(new Dictionary<string, object>() { { "use

使用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();
var-context=new-WebClient.Default.OptimizedContextContainer(新Uri(“服务托管Uri”));
context.Format.UseJson();
User userToUpdate=context.User.ByKey(新字典(){{“userId”,Guid.Parse(“some_Guid”}).GetValue();
Role roleToAdd=context.Role.ByKey(新字典{“roleId”,Guid.Parse(“some_Guid”}).GetValue();
userToUpdate.Roles.Add(roleToAdd);
context.UpdateObject(userToUpdate.Roles);
context.saveChangesSync();
在UpdateObject调用以更新用户角色时代码失败-“上下文当前未跟踪实体”-如果我取消了UpdateObject调用并仅使用SaveChangesAsync,则不会出现错误,但不会添加角色
如何以这种方式向用户添加角色?

导航属性是您应该使用的集合

AddToObject(userToUpdate,"Roles",RoleToAdd)
而不是

context.UpdateObject(userToUpdate.Roles);
移除

userToUpdate.Roles.Add(roleToAdd);