[英]Updating a many-to-many relationship in asp.net core mvc
我有兩個模型
public class User
{
public User()
{
this.Permissions = new HashSet<Permission>();
}
public string UserName { get; set; }
public ICollection<Permission> Permissions { get; set; }
}
和
public class Permission
{
public Permission()
{
this.Users = new HashSet<User>();
}
[Required]
public string Name { get; set; }
public ICollection<User> Users { get; set; }
}
連接表是自動創建的,我看不到 ef model。 當我想更新用戶的權限時,我在 controller 中執行此操作
user.Permissions.Clear();
foreach (var permissionID in userDTO.Permissions)
{
var permission = _context.Permissions.Find(permissionID.PermissionID);
if (permission != null)
{
user.Permissions.Add(permission);
}
}
await _context.SaveChangesAsync();
但是,當我嘗試清除用戶的現有權限並為用戶插入新權限時,我收到一個錯誤:Duplicate entry '1-1' for key 'permissionuser.PRIMARY'
我該如何解決?
盡量不要清除新集中存在的用戶權限。
for (var i=0; i< user.Permissions.Count; i++)
{
var exist= userDTO.Permissions.Any(i=> i.PermissionID=user.Permissions[i].PermissionID);
if (!exist) user.Permissions.RemoveAt(i);
}
foreach (var permission in userDTO.Permissions)
{
var existedPermission= user.Permissions.FirstOrDefault(i=> i.PermissionId=permissionID.PermissionID;
if (existedPermission== null)
{
var newPermission = _context.Permissions.Find(permission.PermissionID);
if (newPermission != null) user.Permissions.Add(permission);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.