Public Class BusinessLogic
Public Sub SaveTables
Dim daDataAccess As New DataAccess.DataAccess
Using scope As New TransactionScope()
daDataAccess.SaveTable1(DataSet)
daDataAccess.SaveTable2(DataSet)
.
.
daDataAccess.SaveTableN(DataSet)
End using
End Sub
End Class
Public Class DataAccess
Public Sub SaveTable1(ByVal drTable As DataRow)
'sql command
Dim CMD As New SqlCommand("spSaveTable1")
CMD.Connection = connect()
CMD.CommandType = CommandType.StoredProcedure
'add parameters in stored procedure
CMD.Parameters.Add("Field1", SqlDbType.NVarChar, 10).Value = drTable("Field1")
'execute stored procedure
CMD.ExecuteNonQuery()
End Sub
Public Sub SaveTable2(ByVal drTable As DataRow)
'sql command
Dim CMD As New SqlCommand("spSaveTable2")
CMD.Connection = connect()
CMD.CommandType = CommandType.StoredProcedure
'add parameters in stored procedure
CMD.Parameters.Add("Field1", SqlDbType.NVarChar, 10).Value = drTable("Field1")
'execute stored procedure
CMD.ExecuteNonQuery()
End Sub
End Class
几个问题:
在数据访问类中定义连接的理想位置是什么?全球到班级或每个程序?
我可以在不传递连接的情况下使用事务范围吗?如果我不这样做(通过连接),不管我对第一个问题做了什么,要么连接关闭,要么我得到DTC设置错误。我相信我不需要它(DTC),因为我只访问数据访问组件中所有程序的1个数据库。
拜托,请帮忙。如果我通过连接,我将不得不在业务逻辑组件中初始化它,我认为这不是一个好的做法。
我只是简化了代码以便了解我的观点,但至少可以说业务逻辑非常复杂。它是某种工资单的批处理过程。
对我来说最理想的是在业务逻辑中使用事务范围,同时保持与数据访问层的连接。
谢谢。