Odata v4 web api 2.2上下文目前尚未跟踪该实体

时间:2014-10-21 14:29:46

标签: 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>() { { "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调用时失败更新用户角色 - 'Context当前没有跟踪实体' - 如果我删除了UpdateObject调用并且只使用saveChangesAsAsync就没有错误,但是没有添加角色 如何以这种方式向用户添加角色?

1 个答案:

答案 0 :(得分:0)

使用属性的导航属性,您应该使用

AddToObject(userToUpdate,"Roles",RoleToAdd)

而不是

context.UpdateObject(userToUpdate.Roles);

并删除

userToUpdate.Roles.Add(roleToAdd);