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方法(及其兄弟)。