首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架4多对多更新

实体框架4多对多更新
EN

Stack Overflow用户
提问于 2010-09-01 03:27:15
回答 1查看 5.7K关注 0票数 4

我有三张桌子-

代码语言:javascript
复制
User (Id, Name)
Roles (Id, Name)
UserRoles (UserId, RoleId)

我认为它们是不言而喻的。如何更新UserRoles中的条目(UserId和RoleId)?

context.User.Roles为我提供了角色列表,但我如何更新它们?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-02 06:34:20

从你的评论中:

context.User.Roles给了我角色列表。我可以执行for-each并更新Id,但是如何更新该表中相应的UserId foreach RoleId呢?

首先,您不应该更新Id。

其次,既然你在使用EF,你应该试着从对象(或实体)的角度来思考,而不是“DB多对多映射表”。每个User实体都有一个Roles集合。如果从User.Roles集合中删除一个Role并调用context.SaveChanges(),则相应的条目将从UserRoles选项卡中删除。同样,当您将Role对象添加到User.Roles集合并保存更改时,将在UserRoles表中创建一个新条目。

为了清晰起见,下面的示例可能很有用:

代码语言:javascript
复制
var user = context.Users.Include("Roles").Where(u => u.Name == "User1").FirstOrDefault();
user.Roles.Remove(user.Roles.Where(r => r.Name == "Admin").FirstOrDefault());
context.SaveChanges();

(null-为简单起见,省略引用检查)。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3612477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档