我有三个名为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表中插入新记录。
因此没有编辑操作,每当用户提交安全角色的设置时,我将删除相关记录并根据新值创建新记录?我的做法是否足够公平?