EF 4.1 Erreur d'intégrité référentielle
J'ai les classes suivantes:
public class Person
{
[Key]
public Guid Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
public string Email { get; set; }
public virtual Survey Survey { get; set; }
}
public class Survey
{
[Key]
public Guid Id { get; set; }
public bool IsFinished { get; set; }
public virtual ICollection<UserAnswer> UserAnswers { get; set; }
public virtual Person Person { get; set; }
}
public class UserAnswer
{
[Key]
public Guid Id { get; set; }
public Guid SurveyId { get; set; }
public virtual Survey Survey { get; set; }
public Guid QuestionId { get; set; }
public virtual Question Question { get; set; }
public Guid AnswerId { get; set; }
public virtual Answer Answer { get; set; }
}
Dans mon datacontext j'ai défini:
modelBuilder.Entity<Survey>().HasRequired(s => s.Person).WithOptional();
modelBuilder.Entity<Survey>().HasMany(s => s.UserAnswers).WithRequired(a => a.Survey).HasForeignKey(a => a.SurveyId).WillCascadeOnDelete(false);
Quelqu'un peut me dire ce que je fais de mal ?
Mise à jour:
Lorsque j'exécute ce code:
var surveyRepository = new SurveyRepository();
foreach (var userAnswer in userAnswers)
{
survey.UserAnswers.Add(userAnswer);
}
surveyRepository.InsertOrUpdate(survey);
surveyRepository.Save();
J'obtiens l'erreur suivante:
Une contrainte d'intégrité référentielle
violation a eu lieu: La propriété
les valeurs qui définissent le référentiel
les contraintes ne sont pas compatibles entre
le principal et les objets dépendants
relation.
source d'informationauteur Nealv
Vous devez vous connecter pour publier un commentaire.
S'il vous plaît, essayer de cette façon,
Je sais que c'est tard, mais peut-être que cela pourrait être utile pour quelqu'un. Ce que d'essayer cela?
Récemment, j'ai eu que "Une contrainte d'intégrité référentielle violation s'est produite: Les valeurs des propriétés qui définissent les contraintes référentielles ne sont pas cohérentes entre le principal et les objets qui en dépendent dans la relation." message d'erreur lorsque j'étais modification d'une entité avec des enfants.
C'était mon code au début:
Et c'est mon code à la fin, fonctionne bien:
Comme vous pouvez le voir, la différence est essentiellement Fixation de l'entité pour le contexte au début. J'espère que cela aide 🙂
Lors de la définition de votre modèle, vous n'avez pas besoin de spécifier le Référentiel des propriétés de l'Id EF créer dans la base de données pour vous.
Changer votre UserAnswer modèle à