Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何删除对象的导航属性_Asp.net Mvc_Linq_Entity Framework_Entity Framework 5 - Fatal编程技术网

Asp.net mvc 如何删除对象的导航属性

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) {

我有两个模型课;SecurityRole&SecurityRoleTypePermission。其中每个Securityrole可以有零到多个SecurityRoleTypePermission。现在我有了以下存储库方法,目的是删除关联的SecurityRole及其所有SecurityRoleTypePermissions(如果它们是可用的):- 我尝试了以下代码:-

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级别执行此操作…实体框架有自己的级联删除。它将删除当前加载到所需实体内存中的所有嵌套资源