Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在工作流中使用相同的事务_C#_Asp.net_Linq To Sql_Transactions_Workflow - Fatal编程技术网

C# 在工作流中使用相同的事务

C# 在工作流中使用相同的事务,c#,asp.net,linq-to-sql,transactions,workflow,C#,Asp.net,Linq To Sql,Transactions,Workflow,如果我的问题看起来很愚蠢,请原谅,但我对工作流一无所知。我想做的是:我在工作流基础项目和一些ASP.NET应用程序中有一些数据库点击。我试图实现的是在同一事务中执行工作流基础和ASP.NET内部的数据库操作。告诉我可能吗?我正在使用linq2sql 这是我的密码: using(var context = new MyDBContext()) { context.Transaction = context.Connection.BeginTransaction(); //

如果我的问题看起来很愚蠢,请原谅,但我对工作流一无所知。我想做的是:我在工作流基础项目和一些ASP.NET应用程序中有一些数据库点击。我试图实现的是在同一事务中执行工作流基础和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();
 }

我不这么认为
instance.Start()
立即返回。实际的工作流活动将在不同的线程中运行(并且可能在不同的进程或不同的机器中)。您必须在工作流中管理事务

即使我在工作流中管理事务,如何将完整的db操作放在一个事务中?我的意思是50%的数据库操作在Web应用程序中,50%在工作流中。您可以向工作流提供从数据库读取的数据,让工作流进行处理,并且仅在工作流终止时更新数据库。您的意思是将整个数据作为参数传递给工作流并执行数据库操作?