gpt4 book ai didi

c# - Entity Framework - 如何从联结表中删除数据

转载 作者:行者123 更新时间:2023-12-02 06:00:27 24 4
gpt4 key购买 nike

我的问题如下 - 我有 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com