填充具有多对多关系的表

时间:2013-07-19 10:43:40

标签: asp.net-mvc entity-framework

我有三个名为TechnologyType,PermisionLevel和SecurityRole的实体。而且,我在一个名为SecurityRoleTypePermisions的单独表中设置这些表之间的链接。这个关系表主要定义某些SecuritRole - >有一定的权限 - >某些技术类型(如服务器)。

现在当我填充这个m-to-m表时,我将有不同的场景: - 1.这些值之间的映射可能已经定义,需要更新。 2.或者地图是新的,应该添加记录。

为了避免这种检查,我决定对我的行动方法采取以下措施: -

[HttpPost]
        public ActionResult AssignPermisionLevel2(ICollection<SecurityroleTypePermision> list, int id)
        {

            repository.DeleteSecurityroleTypePermisions(id);
            foreach (var c in list)
            {
                repository.InsertOrUpdateSecurityroleTypePermisions(c);
            }
            repository.Save();
            return RedirectToAction("Index");
        }

和两个存储库方法: -

public void DeleteSecurityroleTypePermisions(int securityroleID)
        {

            var r = tms.SecurityroleTypePermisions.Where(a => a.SecurityRoleID == securityroleID);
            foreach (var c in r) {
                tms.SecurityroleTypePermisions.Remove(c);
            }

        }
public void InsertOrUpdateSecurityroleTypePermisions(SecurityroleTypePermision role)
        {
         tms.SecurityroleTypePermisions.Add(role);       }

因此,主要是在链接SecurityRole时会执行以下操作 - &gt; TechnologyType - &gt; PermisionLevel: -

  • 删除m-to-m表中具有当前SecurityRoleID的所有记录。

  • 根据从视图中收到的值在M-to-M表中插入新记录。

因此没有编辑操作,每当用户提交安全角色的设置时,我将删除相关记录并根据新值创建新记录?我的做法是否足够公平?

0 个答案:

没有答案