Dans un contexte de données sont insérées des valeurs qui ne sont pas disponibles dans le contexte de données tant qu'après submitchanges?

StackOverflow https://stackoverflow.com/questions/658578

Question

Je parcours un fichier XML d'articles et le (s) journaliste (s) qui les a écrits. Lorsque nous ajoutons les articles dans _Data, notre contexte de données, nous pouvons rencontrer un journaliste qui a besoin d’être ajouté. Nous procédons ainsi:

newJourno = New journalist With {.name = strJournalist}
_Data.journalists.InsertOnSubmit(newJourno)
.articles_journalists.Add(New articles_journalist With {.id_journalist = newJourno.id,         .id_article = .id})

Cependant, par la suite, nous pouvons retrouver ce même journaliste et rien n’est renvoyé lorsque nous procédons ainsi:

Dim journo = _Data.journalists.Where(Function(s) s.name = strJournalist).SingleOrDefault

Donc, il utilise à nouveau le code ci-dessus pour réinsérer le même journaliste.

Une fois que toutes nos insertions sont terminées, nous effectuons un submitchanges. À ce stade, il a un ajustement de tête:

L'instruction INSERT est en conflit avec la contrainte COLUMN FOREIGN KEY 'FK_articles_journalists_journalists'. Le conflit s'est produit dans la base de données 'blah', table 'journalistes', colonne 'id'. La déclaration a été terminée.

En regardant à travers le SQL généré dans le profileur SQL, vous pouvez constater qu’il essaie d’ajouter plusieurs journalistes, cela échouera car le nom doit être distinct. Les enregistrements ultérieurs qui essaient d'être insérés avec ces journalistes échouent car le journaliste n'a pas été mis à jour.

Si j’ai une collection de journalistes, ajoutez-en une, puis regardez dans ma collection, je devrais les voir tous et pas seulement les originaux. Je peux le tromper, je suppose, en effectuant un submitchanges mais cela semble un peu idiot.

Merci d'avance,

Dave.

Était-ce utile?

La solution

Si vous souhaitez ajouter deux lignes parent-enfant à la base de données, vous devez affecter l'entité à la place de la colonne Id. L'identifiant sera généré automatiquement et sera disponible uniquement après les modifications de soumission.

Vous devez créer un objet articles_journalist , puis attribuer l'entité newJourno à ceci:

articles_journalist.journalist = newJourno;

Autres conseils

Le système de gestion de contenu a raison de devoir affecter l'objet, pas l'id.

Cependant, cela ne semble pas résoudre le problème du contexte de données qui ne se rend pas compte que de nouveaux éléments ont été ajoutés jusqu'à la soumission des modifications. Je ne peux que présumer que cela est inhérent à la conception et, par conséquent, j'appelle maintenant submitchanges au fur et à mesure que le code insère les objets que nous recherchons ultérieurement.

"le nom doit être distinct".

C’est un grave défaut de conception. Les noms de personne ne sont jamais uniques.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top