Asp.net mvc 如何删除对象的导航属性
我有两个模型课;SecurityRole&SecurityRoleTypePermission。其中每个Securityrole可以有零到多个SecurityRoleTypePermission。现在我有了以下存储库方法,目的是删除关联的SecurityRole及其所有SecurityRoleTypePermissions(如果它们是可用的):- 我尝试了以下代码:-Asp.net mvc 如何删除对象的导航属性,asp.net-mvc,linq,entity-framework,entity-framework-5,Asp.net Mvc,Linq,Entity Framework,Entity Framework 5,我有两个模型课;SecurityRole&SecurityRoleTypePermission。其中每个Securityrole可以有零到多个SecurityRoleTypePermission。现在我有了以下存储库方法,目的是删除关联的SecurityRole及其所有SecurityRoleTypePermissions(如果它们是可用的):- 我尝试了以下代码:- public void DeleteRole(int id, string username) {
public void DeleteRole(int id, string username)
{
var role = tms.SecurityRoles.SingleOrDefault(a=>a.SecurityRoleID ==id);
var auditinfo = IntiateAdminAudit(tms.AuditActions.SingleOrDefault(a => a.Name.ToUpper() == "DELETE").ID, tms.SecurityTaskTypes.SingleOrDefault(a => a.Name.ToUpper() == "SECURITY ROLE").ID, username, role.Name);
var srtp = role;
foreach (var i in srtp.SecurityroleTypePermisions)
{
tms.SecurityroleTypePermisions.Remove(i);
}
tms.SecurityRoles.Remove(role);
InsertOrUpdateAdminAudit(auditinfo);
}
但我有以下例外:-
Collection was modified; enumeration operation may not execute.
所以我的问题是,尽管我已经将role对象复制到了一个新的srtp变量,但为什么会出现这个错误
第二个问题,我需要知道是否有一种方法可以删除对象导航属性,而不需要像我的代码中那样使用foreach循环遍历每个记录
谢谢谢谢你的链接,但这将回答我的第一个问题,而它没有回答我的第二个问题?你尝试过级联删除吗?如果没有,我将尝试添加一个带有示例的答案,您是指数据库级别的级联删除?我希望避免在DB级别执行此操作…实体框架有自己的级联删除。它将删除当前加载到所需实体内存中的所有嵌套资源