/ / Une entité qui crée des entités en utilisant Entity Framework - c #, entity-framework, ado.net

Entités qui créent des entités à l'aide de Entity Framework - c #, entity-framework, ado.net

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 № 1

Vous 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).