У меня есть объект списка типа моего класса (сотрудник), и он имеет около 3 элементов.
Скажем, например:
empObj.Id = 3, empObj.Name = abc, emp.Value = Yes
empObj.Id = 4, empObj.Name = xyz, emp.Value = No
empObj.Id = 5, empObj.Name = pqr, emp.Value = Yes
Теперь я хочу вставить все элементы в виде отдельных строк в свою БД с помощью хранимой процедуры.
Я не хочу попадать в БД для каждого элемента.
Моим входным параметром для SaveMethod
в моем слое данных будет указанный выше объект списка, и мой подход выглядит следующим образом:
Public Overridable Function SaveMethod(businessEntity As List(Of Employee)) As Boolean
Using scope As System.Transactions.TransactionScope = New System.Transactions.TransactionScope()
'DECLARE CONNECTION VARIABLE
Dim objSqlConn As SqlConnection = Nothing
'DECLARE SQL PARAMS VARIABLE
Dim objSqlParams As SqlParameter() = Nothing
'DECLARE BOOLEAN VARIABLE
Dim bolReturnValue As Boolean = False
'SET THE CONNECTION
objSqlConn = GetCSSConnection()
'SET THE PARAMETERS TO THE STORED PROCEDURE
objSqlParams = New SqlParameter(3) {}
For i As Integer = 0 To businessEntity.Count - 1
objSqlParams(0) = New SqlParameter("@myParam1", SqlDbType.Int)
objSqlParams(0).Value = 2 ' businessEntity(i).Id
objSqlParams(1) = New SqlParameter("@myParam2", SqlDbType.Int)
objSqlParams(1).Value = businessEntity(i).Name
objSqlParams(2) = New SqlParameter("@myParam3", SqlDbType.Bit)
objSqlParams(2).Value = businessEntity(i).value
Next
'BUILD NEW SQL CONNECTION AND EXECUTE THE STORED PROCEDURE
'ASSIGN THE RESULT TO BOOLEAN VARIABLE
bolReturnValue = (Microsoft.VisualBasic.IIf(ExecuteNonQuery(objSqlConn, CommandType.StoredProcedure, "myStoredProcedure", objSqlParams) > 0, True, False))
CloseConnection(objSqlConn)
Return bolReturnValue 'RETURNS BOOLEAN VALUE
End Using
End Function
Он не выдает никакой ошибки, он также возвращает True. Но он не сохраняется в базе данных.
Чего здесь не хватает? Правилен ли этот подход? Есть ли лучший способ?
DataTable
соответствующими данными, а затем сохраните лот одним вызовом методаUpdate
SqlDataAdapter
. Вам нужно будет установитьInsertCommand
и/илиUpdateCommand
в зависимости от ситуации. - person jmcilhinney   schedule 16.05.2018