2009-06-30 5 views
2

J'ai donc utilisé le service de persistance SQL par défaut de Windows Workflow qui gère tout seul sans problème. Maintenant, l'un des environnements dans lequel je déploie n'a pas d'accès direct à la base de données; il pousse les appels de procédure stockée via un service Web sur un proxy pour plus de sécurité. Bien sûr, cela ne plaît pas aux dieux de la persistance SQL, bien que j'aimerais pouvoir tirer parti de cet environnement. Donc vraiment la seule différence que j'ai entre le comportement par défaut et potentiellement celui que je code pour notre environnement serait une autre façon d'appeler les procédures stockées: à distance au lieu d'accès direct (le service web mélange les jeux de données).Windows Workflow: Service de persistance personnalisé, même schéma et logique?

Si vous deviez résoudre ce problème afin de tirer parti des services de persistance, que feriez-vous? Théoriquement, j'aimerais conserver les mêmes tables et les mêmes procédures, mais je ne trouve pas de bonne référence quant à ce dont j'ai besoin d'appeler les procédures stockées.

Répondre

3

J'ai écrit un WorkflowPersistenceService qui fonctionne avec SQL Compact. Sa structure correspond étroitement à la structure interne du service SqlWorkflowPersistenceService d'origine, à l'exception qu'il n'utilise pas de procédures stockées, ce qui est impossible car SQL Compact ne les prend pas en charge. Le fournisseur utilise Linq to SQL à la place. Parce que L2S fonctionne aussi bien avec SQL Compact que SQL Server, le fournisseur fait un travail parfaitement bien avec l'un ou l'autre. La seule différence dans le schéma de base de données est la suppression de la propriété car SQL Compact est une base de données mono-utilisateur. Cela dit, ajouter ce serait assez facile. Prendre ceci et ajouter une couche WCF entre la partie WorkflowPersistenceService et la partie L2S ne devrait pas s'avérer très difficile.

Vous pouvez télécharger le projet à partir de http://code.msdn.microsoft.com/SqlCeWFPersistence.

Le code que vous devez modifier est la classe SqlCeDataAccess.

+0

Parfait parfait parfait, exactement ce que je cherchais. Merci beaucoup! – Chris

Questions connexes