型号:
public class UserProfile
{
public int Id { get; set; }
public virtual ApplicationUser ApplicationUser { get; set; }
public string Name { get; set; }
public virtual ICollection<UserProfile> Followers { get; set; }
}
方法:
public void Follow(int id)
{
if (id != AppUser.UserProfile.Id)
{
UserProfile profile = db.UserProfile.Find(id);
if (profile != null)
{
if (profile.Followers.Contains(AppUser.UserProfile))
{
profile.Followers.Remove(AppUser.UserProfile);
}
else
{
profile.Followers.Add(AppUser.UserProfile);
}
db.Entry(profile).State = EntityState.Modified; //error here
db.SaveChanges();
}
}
}
当用户跟随另一个用户时,用户会被添加到关注者ICollection中。如果用户已经关注,则用户将从关注者中删除。
当我尝试更新数据库时,出现此错误:
System.InvalidOperationException:'无法定义两个对象之间的关系,因为它们附加到不同的ObjectContext对象。'
如何解决这个问题?
答案 0 :(得分:1)
问题是AppUser.UserProfile
不在db
上下文中
您可以将AppUser.UserProfile
附加到您需要的上下文中,也可以从UserProfile
上下文(db
)读取Find(AppUser.UserProfile.Id
。)
为了以防万一,请不要将AppUser.UserProfile
克隆到上下文中,否则EF会添加新的UserProfile
。