C# 无法定义这两个对象之间的关系,因为在更新记录时它们附加到不同的ObjectContext对象

C# 无法定义这两个对象之间的关系,因为在更新记录时它们附加到不同的ObjectContext对象,c#,asp.net-mvc,entity-framework-6,C#,Asp.net Mvc,Entity Framework 6,当使用用户角色导航更新权限记录时,我收到错误“无法定义两个对象之间的关系,因为它们附加到不同的ObjectContext对象。” var permission = _permissionService.GetPermissionRecordBySystemName(permissionSystemName); if (permission != null) { var userRole = _userService.GetUserRoleById(roleId); if (p

当使用用户角色导航更新权限记录时,我收到错误“无法定义两个对象之间的关系,因为它们附加到不同的ObjectContext对象。

var permission = _permissionService.GetPermissionRecordBySystemName(permissionSystemName);
if (permission != null) 
{
    var userRole = _userService.GetUserRoleById(roleId); 
    if (permission.UserRoles.Contains(userRole))
    {
        permission.UserRoles.Remove(userRole);
    }
    else
    {
        permission.UserRoles.Add(userRole);
    }
    _permissionService.Update(permission); // Error at this line
} 
我使用了UnityContainer和repository模式

我使用了EntityFramework(代码优先)。以下是“许可记录”类的代码

公共类PermissionRecord:BaseEntity
{
私有ICollection用户角色;
公共字符串名称{get;set;}
公共字符串SystemName{get;set;}
公共字符串类别{get;set;}
公共虚拟ICollection用户角色
{
get=>\u userRoles???(\u userRoles=new List());
受保护集=>\u userRoles=value;
}    
}

请参考:和@Shawn Xiao谢谢,我已经参考了这些链接。问题是因为Unity而出现的,我只是将其删除并使用Autofac。现在开始工作。请参考:和@Shawn Xiao谢谢,我已经参考了这些链接。问题是因为Unity而出现的,我只是将其删除并使用Autofac。现在开始工作了。
public class PermissionRecord : BaseEntity
{
    private ICollection<UserRole> _userRoles;    

    public string Name { get; set; }    

    public string SystemName { get; set; }

    public string Category { get; set; }

    public virtual ICollection<UserRole> UserRoles
    {
        get => _userRoles ?? (_userRoles = new List<UserRole>());
        protected set => _userRoles = value;
    }    
}