클래스를 살펴보고 아래에 입력하십시오 :VB.NET - 단일 클래스, 다중 용도?
Imports System.Data.SqlClient
Public Class c1
Dim PersonID As Integer
Public Sub New(ByVal Person As Person)
PersonID = Person.PersonID
End Sub
Public Sub New()
End Sub
Private Sub SingleDelete()
Dim objCommand As SqlCommand
Dim objCon As SqlConnection
Try
Dim _ConString As String = "Data Source=IANSCOMPUTER;Initial Catalog=Test;Integrated Security=True;MultipleActiveResultSets=true"
objCon = New SqlConnection(_ConString)
objCommand = New SqlCommand("Delete FROM Person were id=" & PersonID)
objCommand.Connection = objCon
objCon.Open()
objCommand.ExecuteNonQuery()
Catch ex As Exception
Throw
Finally
End Try
End Sub
Private Sub MassDelete(ByVal listPerson As List(Of Person))
Dim objCommand As SqlCommand
Dim objCon As SqlConnection
Try
Dim _ConString As String = "Data Source=IANSCOMPUTER;Initial Catalog=Test;Integrated Security=True;MultipleActiveResultSets=true"
objCon = New SqlConnection(_ConString)
For Each Person In listPerson
objCommand = New SqlCommand("Delete FROM Person were id=" & Person.PersonID)
objCommand.Connection = objCon
objCon.Open()
objCommand.ExecuteNonQuery()
Next
Catch ex As Exception
Throw
Finally
End Try
End Sub
End Class
Public Class Person
Public PersonID As String
End Class
이 클래스의 두 가지 용도가 있습니다
1) Call the constructor with a Person argument. Then call SingleDelete i.e. delete one person.
2) Call the zero argument constructor. Then call multiple delete i.e. delete many persons (all persons in the list are deleted)
이이 SOLID 원칙을 파괴 하는가는? 수업에는 두 가지 목적이 있습니다. 제로 인수 생성자가 사용되면 PersonID 인스턴스 변수가 사용되지 않습니다.
내가 이것을 지나치게 생각하면 방황합니다.
아마도. PersonID가 null인지 여부에 따라 WHERE 절을 명령 문자열에 추가하면 이러한 경우를 단일 사례로 접을 수 있다고 생각합니다. – neontapir
주제에서 벗어나 전체 코드 인 경우 연결을 종료하지 않을 것입니다. –
@ Jack Pettinger, 감사합니다. 프로덕션 환경에서 항상 일회용 개체에 USING 문을 사용합니다. 나는 위의 코드에서 속도를 내지 못했다. 어쨌든 +1하십시오. – w0051977