gpt4 book ai didi

vb.net - 什么时候可以在 VB.Net 中使用 GoTo 语句?

转载 作者:行者123 更新时间:2023-12-03 00:01:05 26 4
gpt4 key购买 nike

我有一个流程需要在数据库中创建一堆记录,并在出现问题时回滚所有内容。我想做的是这样的:

Public Structure Result
Public Success as Boolean
Public Message as String
End Structure

Private _Repository as IEntityRepository

Public Function SaveOrganization( _
ByVal organization As rv_o_Organization) As Result
Dim result = Result.Empty

_Repository.Connection.Open()
_Repository.Transaction = _Repository.Connection.BeginTransaction()

''//Performs validation then saves it to the database
''// using the current transaction
result = SaveMasterOrganization(organization.MasterOrganization)
If (Not result.Success) Then
GoTo somethingBadHappenedButNotAnException
End If

''//Performs validation then saves it to the database
''//using the current transaction
result = SaveOrganziation(dbOrg, organization)
If (Not result.Success) Then GoTo somethingBadHappenedButNotAnException

somethingBadHappenedButNotAnException:
_Repository.Transaction.Commit()
_Repository.Connection.Close()
Return result
End Sub

这是 GoTo 语句的正确使用,还是只是非常糟糕的设计?有更优雅的解决方案吗?希望这个示例能够阐明要点

最佳答案

如果你必须问,就不要问。

对于您的特定代码,您可以这样做:

Public Function SaveOrganization(ByVal organization As rv_o_Organization) As Result
Dim result As Result = Result.Empty

_Repository.Connection.Open()
_Repository.Transaction = _Repository.Connection.BeginTransaction()

'Performs validation then saves it to the database
'using the current transaction
result = SaveMasterOrganization(organization.MasterOrganization)

'Performs validation then saves it to the database
'using the current transaction
If result.Success Then result = SaveOrganziation(dbOrg, organization)

_Repository.Transaction.Commit()
_Repository.Connection.Close()
Return result
End Sub

关于vb.net - 什么时候可以在 VB.Net 中使用 GoTo 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/567386/

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