0
如果我的问题看起来很愚蠢,但我完全不熟悉Workflow。我想要做的是:我在Workflow Foundation项目中有一些数据库命中,而在ASP.NET应用程序中有一些数据库命中。我试图实现的是在同一个事务中在Workflow基础和ASP.NET中执行数据库操作。告诉我可能吗?我正在使用linq2sql。在工作流程中使用相同的交易
这里是我的代码:
using(var context = new MyDBContext())
{
context.Transaction = context.Connection.BeginTransaction();
//Here I am calling my Workflow function
using (WorkflowRuntime workflowRuntime = new WorkflowRuntime())
{
AutoResetEvent waitHandle = new AutoResetEvent(false);
workflowRuntime.WorkflowCompleted += delegate(object sender, WorkflowCompletedEventArgs e)
{
waitHandle.Set();
if ((string)e.OutputParameters["OutputMessage"] != "")
msg = "Workflow error : " + (string)e.OutputParameters["OutputMessage"];
};
workflowRuntime.WorkflowTerminated += delegate(object sender, WorkflowTerminatedEventArgs e)
{
Console.WriteLine("ERROR: " + e.Exception.Message);
waitHandle.Set();
};
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(MyWorkflow), parameters);
instance.Start();
waitHandle.WaitOne();
}
//DB Operation in ASP.NET
context.DbOperation();
context.SubmitChanges();
context.Transaction.Commit();
}
即使我在Workflow中管理事务,如何将完整的数据库操作放在一个事务中?我的意思是我的数据库操作的50%在Web应用程序中,50%在工作流程中。 –
您可以使用从数据库读取的数据为工作流提供工作流,让工作流程处理并仅在工作流程终止时更新数据库。 – xing
您的意思是将整个数据作为参数传递给Workflow并执行数据库操作? –