Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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# 将OracleTransaction值传递给新表单_C#_Transactions_Commit_Rollback - Fatal编程技术网

C# 将OracleTransaction值传递给新表单

C# 将OracleTransaction值传递给新表单,c#,transactions,commit,rollback,C#,Transactions,Commit,Rollback,我在一个表单上有一些存储过程,最后我不会提交或回滚。加载一个新表单,并有一个问题提示用户“框中是否有其他产品?”当用户单击“是”时,事务必须回滚。如果没有,则必须提交事务 我的问题是如何将事务值传递给新表单?我认为事务不属于表单附近的任何地方。形式就是观点;事务由服务拥有和管理。您的设计听起来好像分层不正确。您必须创建层:数据访问层、业务逻辑层和表示层。这是三层体系结构,您的事务必须位于数据访问层,请使用以下链接: 但在这种情况下,我认为您使用MessageBox来显示问题,您必须获得对话框结果

我在一个表单上有一些存储过程,最后我不会提交或回滚。加载一个新表单,并有一个问题提示用户“框中是否有其他产品?”当用户单击“是”时,事务必须回滚。如果没有,则必须提交事务


我的问题是如何将事务值传递给新表单?

我认为事务不属于表单附近的任何地方。形式就是观点;事务由服务拥有和管理。您的设计听起来好像分层不正确。

您必须创建层:数据访问层、业务逻辑层和表示层。这是三层体系结构,您的事务必须位于数据访问层,请使用以下链接: 但在这种情况下,我认为您使用MessageBox来显示问题,您必须获得对话框结果。使用以下代码:

if (XtraMessageBox.Show("your question", "Heading", MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.Yes)
        {
            Transaction.Commit();
        }

那么您的建议是什么呢?创建一个基于接口的服务层,并让表单调用它来实现用例。服务将提交或回滚事务。用户在签出购物车时指示需要提交事务。我还建议搜索“购物车”的堆栈溢出。你不是第一个。和其他人一样,我同意你的关注点分离很差,但是如果你现在想取得一些进展,一种方法就是你正在使用的wahtever连接类的BeginTransaction方法(及其兄弟)。