EF 5, objet de mise à jour donne "Une violation de contrainte d'intégrité référentielle s'est produite"

Dans mon modèle, j'ai un tas d'objets du domaine. Maintenant, je vais avoir un problème lorsque vous essayez de mettre à jour un Utilisateur de l'objet. L'Utilisateur dispose d'une foreignkey ce qui concerne le Rôle de l'objet. Quand je l'ai mise à jour de l'Utilisateur de l'objet sans changeing la valeur foreignkey (FkRoleId) tout fonctionne très bien. Mais quand je change le rôle de l'utilisateur actuel je veux mettre à jour, je reçois l'erreur:

Une contrainte d'intégrité référentielle violation a eu lieu: La propriété
les valeurs qui définissent les contraintes référentielles ne sont pas compatibles
entre le principal et les objets qui en dépendent dans la relation.

Voici comment je mettre à jour mon-objet:

public void Update(User user)
{
    using (var context = new DBEntities())
    { 
    context.Entry(user).State = System.Data.EntityState.Modified;
    context.SaveChanges();
    }
}

Comment puis-je mettre à jour mon objet sans l'obtention de cette exception?
Il doit y avoir un moyen pour chaning la valeur foreignkey pour mappen l'utilisateur à un autre rôle.

Voici mes classes de domaine dans ce cas:

public partial class User
{
public User()
{
    this.Advertisers = new HashSet<Advertiser>();
    this.Cases = new HashSet<Case>();
    this.Materials = new HashSet<Material>();
}

public int PkId { get; set; }
public int FkRoleId { get; set; }
public string Name { get; set; }
public string Email { get; set; }
public string Password { get; set; }
public System.DateTime Created { get; set; }
public bool Active { get; set; }

public virtual ICollection<Advertiser> Advertisers { get; set; }
public virtual ICollection<Case> Cases { get; set; }
public virtual ICollection<Material> Materials { get; set; }
public virtual Role Role { get; set; }
}


public partial class Role
{
public Role()
{
    this.Users = new HashSet<User>();
}

public int PkId { get; set; }
public string Name { get; set; }
public string Description { get; set; }

public virtual ICollection<User> Users { get; set; }
}

source d'informationauteur Nicke