Существует несколько способов получения ваших данных. Вы можете использовать что-то вроде WF ADO.NET Activity Pack CTP 1 от CodePlex, оно работает, но не может сказать, что я фанат. Вы можете сделать что-то подобное, используя EF, NHibernate ect в CodeActivity. Но в целом я всегда говорю людям разделить что от как. Рабочий процесс должен касаться части, и вы должны оставить как вне самого рабочего процесса. Это означало бы создание реальной простой деятельности, которая работает с расширением рабочего процесса и помещает код доступа к данным в расширение рабочего процесса. Как только вы это сделаете, расширение вашего рабочего процесса - это еще один репозиторий данных, и вы можете использовать там стандартные методы кодирования.
Да, я полностью согласен с вами, и я также являюсь большим поклонником разделения беспокойства! Конечно, у меня есть репозитории данных. Но создание экземпляра службы репозитория данных в рамках WF-активности - это, в конце концов, создание экземпляра моего EF-контекста. Мой вопрос: это нормально или мне нужно создать какую-то «внешнюю» службу и зарегистрировать ее где-нибудь в WF Runtime (как я и должен был делать в WF3.5, как я понимаю). Мой вопрос более технический, а затем я могу сделать разложение сверху :) Какие расширения WF вы упомянули? –
Расширение Wf4 - это то же самое, что и служба времени исполнения WF3. Вы добавляете его в коллекцию WorkflowInvoker/WorkflowApplication Extensions (или коллекцию WorkflowExtensions WorkflowServiceHost) и получаете ссылку на нее с помощью context.GetExtension(). –
Maurice