gpt4 book ai didi

c# - 删除 Entity Framework 中的对象映射多对多关系

转载 作者:太空狗 更新时间:2023-10-29 23:25:19 25 4
gpt4 key购买 nike

在 ASP.NET MVC 中我有三个表:UsersRolesUsersInRoles(标准多对多连接表)。当我将它映射到 EF 时,它创建了两个实体类型:UsersRoles。现在我想使用如下代码删除一些用户:

var aspnetUsers = _db.aspnet_Users.Single(a => a.UserId == id);
_db.aspnet_Users.DeleteObject(aspnetUsers);

当然我不能这样做,因为在表 UsersInRoles 中的 SQL 级别有一个连接的行。

如何从 EF 级别删除该行(UsersInRoles 表未映射)?

最佳答案

在上下文中调用 SaveChanges() 之前,您需要从用户对象中删除所有角色:

var aspnetUser = _db.aspnet_Users.Single(a => a.UserId == id);

foreach(var role in aspnetUser.Roles.ToArray())
{
aspnetUser.Roles.Remove(role);
}

_db.aspnet_Users.DeleteObject(aspnetUser);

_db.SaveChanges();

这将防止数据库中的引用约束导致的异常,并确保UsersInRoles表中的相应记录被删除。

关于c# - 删除 Entity Framework 中的对象映射多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10056593/

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