J'ai deux tables dans mon application. Le premier, Sections, stocke le contenu d'une section spécifique d'une publication en ligne. Cela contient (entre autres choses) le titre de la section et un champ CurrentRevisionId (FK).Ajout de deux entités avec des FK pointant entre elles
Une deuxième table, Révisions, stocke différentes révisions de ce contenu. Il a un champ PK RevisionId (le FK ci-dessus, utilisé pour indiquer la révision en cours), le contenu HTML lui-même et SectionId (FK), spécifiant à quelle section appartient la révision.
Donc, fondamentalement, j'ai ces deux FK pointant les uns vers les autres. Lorsque je crée une nouvelle section, l'entité enfant CurrentRevision est également remplie avec ce contenu. Mais le InsertOnSubmit échoue avec cette erreur:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Sections_Revisions". The conflict occurred in database "xxxx", table "xxxx.Sections", column 'SectionID'. The statement has been terminated.
Je pense qu'il ne peut pas en même temps créer les lignes et les remplir avec de l'autre PKs.
Dois-je d'abord insérer la section, puis la révision (avec PK de la section), puis mettre à jour la section avec le PK de révision? Ou y a-t-il une solution meilleure/plus élégante à cela?
EDIT: J'ai attaché un screencap des deux tables avec leurs relations. Chaque section a de nombreuses révisions (FK SectionID à l'intérieur du tableau des révisions). En outre, il existe une relation un-à-un dans laquelle le champ CurrentRevisionId de la section pointe vers la révision "actuelle". Cette révision "actuelle" est l'endroit où l'application tire le HTML. J'espère que ça clarifie un peu les choses.
juste une suggestion, pensez à ajouter un screencap de votre modèle, va rendre la vie plus facile pour tout le monde. parce que je ne comprends pas comment cela pourrait même fonctionner d'un point de vue pure base de données (et encore moins EF). est-ce un 1-1 ou 1- *, ou peut-être un beaucoup plus? – RPM1984
@ RPM1984, merci pour la suggestion, j'ai ajouté le screencap et quelques précisions sur les relations :) –