2010-06-05 6 views
1

J'héberge un service de workflow wcf dans mon application ASP.NET MVC2. Je dois pouvoir charger/enregistrer des données dans mon flux de travail (WF4). Comment cela peut-il être fait? Devrais-je simplement instancier mon contexte Entity Framework dans mes activités et lire/écrire?Comment accéder à la base de données à partir de WF4?

Cheers.

Répondre

1

Il existe plusieurs façons d'obtenir vos données. Vous pouvez utiliser quelque chose comme le WF ADO.NET Activity Pack CTP 1 de CodePlex, cela fonctionne mais je ne peux pas dire que je suis un fan. Vous pouvez faire quelque chose de similaire en utilisant EF, NHibernate ect dans un CodeActivity. Mais en général, je dis toujours aux gens de diviser le ce du comment. Le flux de travail devrait être concerné par le quelle partie et vous devriez garder le comment en dehors du flux de travail lui-même. Cela signifierait créer une véritable activité simple qui fonctionne avec une extension de flux de travail et vous mettre le code d'accès aux données dans l'extension de flux de travail. Une fois que vous faites cela, votre extension de flux de travail est juste un autre référentiel de données et vous pouvez utiliser des techniques de codage standard.

+0

Oui, je suis entièrement d'accord avec vous et je suis aussi un grand fan de la séparation des préoccupations! Bien sûr, j'ai mes référentiels de données. Mais l'instanciation de mon service de référentiel de données dans l'activité WF est, à la fin, l'instanciation de mon contexte EF. Ma question était la suivante: c'est OK ou devrais-je créer un service "externe" et l'enregistrer quelque part dans WF Runtime (comme je l'ai supposé dans WF3.5, si je comprends bien). Ma question est plus technique, et ensuite je peux faire ma décomposition en haut :) Quelles sont les extensions WF que vous avez mentionnées? –

+1

Une extension Wf4 est la même chose qu'un service d'exécution WF3. Vous l'ajoutez à la collection WorkflowInvoker/WorkflowApplication Extensions (ou à la collection WorkflowServiceHost WorkflowExtensions) et obtenez une référence à l'aide de context.GetExtension (). – Maurice

Questions connexes