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

标签 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 调用代码失败 - “上下文当前未跟踪实体” - 如果我消除了 UpdateObject 调用并仅使用 saveChangesAsAsync 则没有错误,但未添加角色 如何以这种方式向用户添加角色?

最佳答案

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

AddToObject(userToUpdate,"Roles",RoleToAdd)

代替

context.UpdateObject(userToUpdate.Roles);

并移除

userToUpdate.Roles.Add(roleToAdd);

关于c# - Odata v4 web api 2.2 上下文当前未跟踪实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489222/

相关文章:

c# - ASP.NET MVC/Web API 自定义身份验证

c# - 启动时出现 OData v4 错误 : Resource not found for the segment 'Whatever'

c# - 用户定义的编译器警告或C#错误

c# - System.Console.WriteLine 在单元测试中不显示输出

asp.net-web-api - 如何修复 `Request.GetNextPageLink`过时的API?

asp.net-mvc-3 - asp.net MVC Web API VS asp.net MVC 4 & MVC 3 互联网应用

C#:如何访问嵌套在结构中的非托管 2-D 二进制数组?

c# - 将变量从子窗体传递到父窗体

asp.net - asp.net web api 和 odata 的路由

azure-devops - Azure DevOps Repo 有 OData 查询吗?