C# 无法定义这两个对象之间的关系,因为在更新记录时它们附加到不同的ObjectContext对象
当使用用户角色导航更新权限记录时,我收到错误“无法定义两个对象之间的关系,因为它们附加到不同的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
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;
}
}