11
votes

EF 4.1 Erreur d'intégrité référentielle

J'ai les classes suivantes: xxx pré>

dans mon DataContext j'ai défini: p> xxx pré>

peut-il me dire ce que je fais ce que je fais mal? p>

mise à jour: strong> p>

Lorsque j'exécute ce code: P>

var surveyRepository = new SurveyRepository();
foreach (var userAnswer in userAnswers)
{
    survey.UserAnswers.Add(userAnswer);
}
surveyRepository.InsertOrUpdate(survey);
surveyRepository.Save();


1 commentaires

Quelle erreur avez-vous eu et quand?


3 Réponses :


-1
votes

Lors de la définition de votre modèle, vous n'avez pas besoin de spécifier les propriétés d'ID de référentielle EF les créera dans la base de données pour vous.

Modifiez votre modèle UserSwer vers P>

public class UserAnswer
{
    [Key]
    public Guid Id { get; set; }

    public virtual Survey Survey { get; set; }

    public virtual Question Question { get; set; }

    public virtual Answer Answer { get; set; }
} 


1 commentaires

Nope Ce n'est pas ça, j'ai d'autres classes où j'ai utilisé des clés et ils fonctionnent bien. J'ai supprimé la clé et toujours la même erreur. Thx cependant pour la réponse



6
votes

S'il vous plaît, essayez de cette façon xxx


3 commentaires

Dans mon cas, c'est beaucoup de problèmes. Il existe entreprise entité et catégorie . Je souhaite que chaque entreprise ait plusieurs catégories S, comment puis-je les attacher à l'aide de leur CatégorieID S?


@Shimmy catégorie.businessid = business.id ou business.categories.add (catégorie) ?


Si Business existe et le ID est connu, utilisez-le, sinon aller avec Ajouter , mais je pense que vous êtes couvert dans n'importe quel Cas.



1
votes

Je sais que c'est tard mais peut-être que cela pourrait être utile pour quelqu'un. Qu'en est-il d'essayer cela? xxx pré>

récemment, j'ai eu que " une violation de la contrainte d'intégrité référentielle s'est produite: les valeurs de propriété qui définissent les contraintes de référence ne sont pas cohérentes entre des objets principaux et dépendants de la relation. em> «Erreur lors de la modification d'une entité avec des enfants. p>

C'était mon code au début: p> xxx pré>

et c'est mon code à la fin, fonctionnant bien: P>

db.Actions.Attach(myAction);
db.ObjectStateManager.ChangeObjectState(myAction, EntityState.Modified);

myAction.ActionUserNameAssignations.Clear();

string[] sSelectedValues = CheckBoxListHelper.GetAllIds(collection, "CheckBox_UserName_", true).ToArray();
foreach (string userName in sSelectedValues)
{
   ActionUserNameAssignation assignation = new ActionUserNameAssignation { ActionId = myAction.ActionId, UserName = userName };
   myAction.ActionUserNameAssignations.Add(assignation);
}

db.SaveChanges();


0 commentaires