In ASP.NET MVC I have three tables:
Users
, Roles
, UsersInRoles
(standard many to many joining table).
When I've mapped it to EF, it created two Entity Types: Users
and Roles
.
Now I want to delete some user using code like below:
var aspnetUsers = _db.aspnet_Users.Single(a => a.UserId == id);
_db.aspnet_Users.DeleteObject(aspnetUsers);
of course I can't do it, because in SQL level in table UsersInRoles
there is a connected row.
How to delete that row from EF level (UsersInRoles
table is not mapped)?
You need to remove all the roles from the user object before calling SaveChanges()
on the context:
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();
This will prevent the exception caused by the referential constraints in the database and ensure that the corresponding records in UsersInRoles table get deleted.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With