我有三张桌子-
User (Id, Name)
Roles (Id, Name)
UserRoles (UserId, RoleId)我认为它们是不言而喻的。如何更新UserRoles中的条目(UserId和RoleId)?
context.User.Roles为我提供了角色列表,但我如何更新它们?
谢谢。
发布于 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表中创建一个新条目。
为了清晰起见,下面的示例可能很有用:
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-为简单起见,省略引用检查)。
https://stackoverflow.com/questions/3612477
复制相似问题