Comment gérez-vous le cas quand une entité a besoincréer, dans l'une de ses méthodes, d'autres entités? Mon problème est que puisque chaque entité individuelle n’a pas "accès à l’objet ObjectContext, celui-ci avec les méthodes AddToBlahs (), elle ne peut pas le faire.
Par exemple, avoir un modèle de site qui a unMéthode UpdateLinks () supposée créer des objets de lien appartenant à ce site. La méthode UpdateLinks () n’a pas de "ObjectContext". Que faites-vous? Vous lui en donnez un, comme ceci:
public void UpdateLinks(ProjectEntities db) {
foreach (var link in FetchLinks()) {
db.AddToLinks(link);
}
}
ou utilisez-vous un autre motif?
Réponses:
2 pour la réponse № 1Vous n'avez pas besoin du contexte pour cela.
Depuis Site.UpdateLinks
crée Link
objets appartenant à l'instance, l'instance aura des associations avec le nouveau Site
. Ajout d'un Link
à Site.Links
automatiquement fait le nouveau Link
fait partie du même contexte (le cas échéant) que le Site
. De même, lorsque vous enregistrez le Site
la Link
sera sauvé avec elle.
1 pour la réponse № 2
Pas sûr de la réponse de Craig Stuntz ... Le lien devrait être attaché au contexte, mais l'ajout d'un lien à Site.Links ne l'attache pas automatiquement. Vous devez quand même faire db.AddToLinks (link).
Mais répondre à votre question, l’un des meilleursLes modèles de gestion ObjectContext sont probablement les modèles UnitOfWork. En l'utilisant, vous pouvez rendre les entités "conscientes de l'étendue à laquelle elles appartiennent actuellement". Regarde ça article pour une description détaillée et des exemples de mise en œuvre. Vous pouvez toujours transmettre ObjectContext à la méthode en tant que paramètre, comme vous le faites dans votre exemple (implémentation plus simple).