作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的问题如下 - 我有 2 个具有多对多关系的表(用户、角色)。当我想为用户添加新角色时,一切正常,但我无法从用户中删除角色。
List<Role> roles = new List<Role>();
roles.Add(role1); roles.Add(role3);
User user = db.users.Find(1);
user.roles = roles;
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
正如我上面提到的,此代码插入新角色 (1,3),但不会删除角色 2(如果存在)。我不知道如何从这个连接表中删除记录,你能帮我吗?我知道,当我从一个表中删除对象时,与该对象相关的所有数据都会从连接表中删除,但我不想删除 -> 添加对象,因为它与另一个表相关。
最佳答案
这是另一种解决方案,您首先必须加载用户的相关角色,然后再用新列表替换整个角色,如下所示:
User user = db.users.Include<User, ICollection<Role>>(u=>u.roles)
.FirstOrDefault(u=>u.ID == 1);
if(user != null){
user.roles = roles;
db.SaveChanges();
}
我猜你的roles
导航属性的类型为 ICollection<Role>
用户的关键属性是 ID
,您可以阅读有关使用 Include
的更多信息扩展方法(在 QueryableExtensions
中声明。
关于c# - Entity Framework - 如何从联结表中删除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862713/
我需要创建一个从 C:\x 到 C:\xxx\yyy\zzz\aaa\bbb 的连接点(目录符号链接(symbolic link)),因为在将文件添加到这个目录,我无法控制目录结构。 我读到创建连接点
我是一名优秀的程序员,十分优秀!