Я не очень хорошо разбираюсь в vb. net из c# фона. У меня есть форма с btn и вводом, который принимает строку, запускается и обновляется в БД через сохраненный pro c. Сохраненный pro c должен возвращать параметры @Message и @Success. Тем не менее, я немного растерялся, как вернуть эти параметры. У меня есть 3 функции. Субтитр btn click (который вызывает функцию BL), функция BL (которая вызывает функцию DA) и функция DA (которая вызывает сохраненный pro c на сервере sql). Я также немного сбит с толку относительно того, как все это работает. Я прочитал, что мне не нужно ничего возвращать из моей функции DA, но если это правда, то как функция BA получит параметры успешности / сообщения?
Я знаю, что мне здесь очень не хватает. Может ли кто-нибудь помочь мне реструктурировать это и дать краткое объяснение того, как / почему это работает таким образом. Ниже приведен мой код.
BTN нажмите sub:
'Button click that calls CertificateOrder BL function InvalidateCertificate()
Private Sub btnInvalidateCertificate_Click(sender As Object, e As System.EventArgs) Handles btnInvalidateCertificate.Click
'Cert ID to invalidate
Dim certificateId As String = txtCertificateId.Value
Dim msg As Response.BaseResponse
'Call stored proc from BL
msg = CertificateOrder.InvalidateCertificate(certificateId)
Me.txtCertificateId.ErrorText = msg.Message
If msg.Success Then
Forms.FadeForm.ShowDialog(msg.Message, "Success", Forms.FadeForm.MessageIcons.Information, Forms.FadeForm.MessageButtons.Ok)
End If
End Sub
BL функция:
''' <summary>
''' Calls DataAccess function InvalidateCertificate()
''' to invalidate certificate
''' </summary>
Public Shared Function InvalidateCertificate(ByVal certificateId As System.String) As Response.BaseResponse
Using context As New CORADBContext
Dim message As System.String = ""
Dim success As System.Boolean = False
context.InvalidateCertificate(certificateId, success, message)
Return message
End Using
End Function
DA функция:
''' <summary>
''' Calls the [spInvalidateCertificate] stored proc
''' to update a cert to be invalid
''' </summary>
''' <returns></returns>
<Extension>
Public Function InvalidateCertificate(ByVal context As DbContextBase,
ByVal certificateId As System.String,
ByRef success As System.Boolean,
ByRef message As System.String) As Int32
Dim successParameter As New SqlParameter("@Success", success) With {.Direction = ParameterDirection.InputOutput, .Value = False}
Dim messageParameter As New SqlParameter("@Message", message) With {.Direction = ParameterDirection.InputOutput, .Value = ""}
Dim parameters() As SqlParameter = {New SqlParameter("@CertificationValue", certificateId), successParameter, messageParameter}
Dim results As Int32 = context.ExecuteProcedure("Orders.spInvalidateCertificate", parameters)
success = DirectCast(successParameter.Value, System.Boolean)
message = DirectCast(messageParameter.Value, System.String)
'success and message need to be returned
Return 0
End Function