gpt4 book ai didi

sql事务多个类vb.net

转载 作者:行者123 更新时间:2023-12-03 03:27:54 24 4
gpt4 key购买 nike

使用 Visual Studio 2013、VB.NET 和 SQL Server(2008 年以后的各个版本)

在我的 VB.NET 项目中,我创建了类来表示项目中的主要实体 - 例如,cSalesOrder、cSalesOrderDetail、cPacklist 等。每个类都包含各种方法来执行基本任务,例如保存、更新、负载等

在我最近的项目中,我必须确保所有进程在保存之前都成功,因此我使用 SQL 事务。我的问题是如何最好地处理跨管理自己的数据流程的多个对象的事务。

这就是我现在正在做的事情。当我需要关闭进程时,我使用这样的代码块来创建连接、事务和命令对象:

Using con As New SQLConnection(MyConnectString)
con.Open
Using trn As SQLTransaction = trn.BeginTransaction
Using cmd As New SQLCommand
cmd.Connection = con
cmd.Transaction = trn
<code here>
End Using
End Using
End Using

(In the <code here> section I would create my objects and run the process.)

在每个类中,我都声明了一个“cmd”对象。例如,在我的 cSalesOrder 类中,我有以下行:

Dim cmd As SQLCommand

然后,当我实例化该类时,我传入在上面的 block 中创建的 cmd 对象:

Dim so As New cSalesOrder
so.cmd = cmd
so.Load

然后我的类中的各种方法使用该“cmd”对象来执行其任务。

我尝试在写入之前使用临时数据表来保存数据,但遇到了 PK 违规问题。系统的容量可能非常大,在我的流程完成之前,用户在受影响的表之一中插入新记录并不罕见。

是否有更好的方法来确保我的所有类都使用相同的事务?

最佳答案

您可以遵循“单例”模式来确保所有类只能访问事务的一个静态实例。

如果您有多种类型的事务,这些事务完全封装,并且同时运行时不会在其他事务中创建 pk 冲突,那么您可以按照单例模式创建多种类型的对象。例如:SalesOrderTransaction、PurchaseOrderTransaction 等。

singleton pattern in vb

关于sql事务多个类vb.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40464658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com