L'instruction INSERT en conflit avec la contrainte de CLÉ ÉTRANGÈRE d'erreur

Salut, je reçois cette erreur

L'instruction INSERT en conflit avec la contrainte de CLÉ ÉTRANGÈRE "FK_dbo.AspNetUsers_dbo.Contacts_ContactID".

Le conflit est survenu dans la base de données "aspnet-COGMakati-20140119015553", table "dbo.Les Contacts", la colonne "ContactID'.

L'instruction a été arrêtée.

Je suis en utilisant Entity Framework MVC 5 IdentityUser donc, je suis vraiment perdu sur ce que je fais 😐

C'est ce que je suis en train de remplir:

public class User : IdentityUser
{
[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Required]
public string Email { get; set; }
public string Birthday { get; set; }
[Display(Name = "Referred By")]
public string LifegroupPreference { get; set; }
[Display(Name = "Civil Status")]
public string CivilStatus { get; set; }
public int EducationID { get; set; }
public int WorkID { get; set; }
public int ContactID { get; set; }
public int FamilyID { get; set; }
public int SpiritualID { get; set; }
public int GrowthMilestoneID { get; set; }
[ForeignKey("EducationID")]
public virtual Education Education { get; set; }
[ForeignKey("WorkID")]
public virtual Work Work { get; set; }
[ForeignKey("ContactID")]
public virtual Contact Contact { get; set; }
[ForeignKey("FamilyID")]
public virtual Family Family { get; set; }
[ForeignKey("SpiritualID")]
public virtual Spiritual Spiritual { get; set; }
[ForeignKey("GrowthMilestoneID")]
public virtual GrowthMilestone GrowthMilestone { get; set; }
}

La façon dont je le vois, le Contact est en train d'être créé avant que l'Utilisateur n'est encore fait. Je ne sais pas pourquoi cela se passe, puisque lorsque vous n'utilisez pas IdentityUser ce code remplit très bien.

Maintenant, c'est la Register méthode:

public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = model.GetUser();
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var idManager = new IdentityManager();
idManager.AddUserToRole(user.Id, "User");
await SignInAsync(user, isPersistent: false);
return RedirectToAction("ViewAllMembers", "Home");
}
else
{
AddErrors(result);
}
}
//If we got this far, something failed, redisplay form
return View(model);
}
  • Est ce que cela se passe uniquement pour les Contacter ? Quid du reste des objets Étrangers ?
  • Salut @Rakhita! Je ne suis pas vraiment sûr de savoir comment tester cela. Mais en supposant que le code est lu de haut en bas, alors je suppose qu'il a passé à travers l'Éducation et le Travail avant d'avoir une erreur avec Contact. Merci!!!!
  • Si vous disposez déjà d'une base de données et fait des changements dans le Modèle plus tard et essayer de courir, vous obtenez cette erreur. Changer le nom de base de données et d'essayer. Vous serez amende. Si acceptable de supprimer votre base de données et commencer à nouveau
  • Salut @Reddy, ce que j'ai fait a été de supprimer la .fichier mdf trouve dans mon dossier App_Data et toute ma migrations dossier. J'ai ré-activé les migrations, l'ajout d'une nouvelle migration et la mise à jour de la base de données. Même problème =/ Ou est-il une meilleure façon de supprimer une base de données?
  • A votre base de données eu beaucoup de renseignements qu'il contient?? Auriez-vous l'esprit de la suppression de Db .. êtes-vous à l'aide de SQL server?
  • Pas beaucoup, je peux toujours le supprimer si je dois le faire. Je ne suis pas à l'aide de SQL Server. Comment puis-je supprimer la db? Est-il différent de ce que j'ai indiqué ci-dessus? (Suppression de l' .les fichiers mdf trouve dans mon dossier App_Data du projet)

InformationsquelleAutor Dominic | 2014-02-03