Kam*_*ski 5 c# entity-framework
在ASP.NET MVC我有三个表:
Users,Roles,UsersInRoles(标准多对多连接表)。当我将其映射到EF时,它创建了两个Entity Type:Users和Roles。现在,我想使用以下代码删除一些用户:
var aspnetUsers = _db.aspnet_Users.Single(a => a.UserId == id);
_db.aspnet_Users.DeleteObject(aspnetUsers);
Run Code Online (Sandbox Code Playgroud)
当然我做不到,因为在SQL级别的表中UsersInRoles有一个连接的行。
如何从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();
Run Code Online (Sandbox Code Playgroud)
这将防止数据库中的引用约束引起的异常,并确保UsersInRoles表中的相应记录被删除。
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |