如何传对象参数进入COM+ ?
按照wrox的一本叫做VB.net 事务处理的书上的例子做的,调不通;把对象的各属性分别作为参数传进去是成功的
实体类
<Serializable()> _
Public Class VType
Inherits ExtensibleObjectBase
Public Sub New()
MyBase.Values.Add("VTypeID", System.Guid.NewGuid().ToString)
End Sub
Public Sub New(ByVal info As SerializationInfo, _
ByVal context As StreamingContext)
Me.New()
'Dim objSerializationEntry As SerializationEntry
'For Each objSerializationEntry In info
' MyBase.Values(objSerializationEntry.Name) = objSerializationEntry.Value
'Next
MyBase.Deserialize(info, context)
End Sub
Public Property VTypeID() As Integer
Get
If MyBase.Values("VTypeID") Is Nothing = False Then
Return CType(MyBase.Values("VTypeID"), Integer)
Else
Return ""
End If
End Get
Set(ByVal Value As Integer)
MyBase.Values("VTypeID") = Value
End Set
End Property
Public Property VTypeName() As String
Get
If MyBase.Values("VTypeName") Is Nothing = False Then
Return MyBase.Values("VTypeName")
Else
Return ""
End If
End Get
Set(ByVal Value As String)
MyBase.Values("VTypeName") = Value
End Set
End Property
Public Overloads ReadOnly Property XML() As String
Get
Return MyBase.XML("VType")
End Get
End Property
Public Overrides Sub GetObjectData(ByVal info As SerializationInfo, _
ByVal context As StreamingContext)
MyBase.GetObjectData(info, context)
End Sub
End Class
COM+中的处理类
Public Interface IVTypeTx
Function Insert(ByVal objVType As VType) As Integer
End Interface
<Description("车辆附件维护"), _
Transaction(TransactionOption.Required), _
Synchronization(SynchronizationOption.Required), _
JustInTimeActivation(True)> _
Public Class VTypeTx
Inherits ServicedComponent
Implements IVTypeTx
Function Insert(ByVal objVType As VType) As Integer Implements IVTypeTx.Insert
Dim rtncode As Integer
Dim parameters As SqlParameter()
Try
parameters(0) = New SqlParameter("@chrVTypeID", SqlDbType.Int, 4)
parameters(1) = New SqlParameter("@chrVTypeName", SqlDbType.VarChar, 16)
parameters(2) = New SqlParameter("@chrVTypeDes", SqlDbType.VarChar, 50)
parameters(0).Value = objVType.VTypeID
parameters(1).Value = objVType.VTypeName
parameters(2).Value = objVType.VTypeDes
Dim sqlconVType As New System.Data.SqlClient.SqlConnection
Dim sqlcmdInsertVType As New
system.Data.SqlClient.SqlCommand("sp_VType_Insert")
Dim parameter As SqlParameter
sqlconVType.ConnectionString = _
"data source=(local);initial catalog=vTypemis;password=;user id=sa;"
sqlconVType.Open()
sqlcmdInsertVType.Connection = sqlconVType
sqlcmdInsertVType.CommandType = CommandType.StoredProcedure
For Each parameter In parameters
sqlcmdInsertVType.Parameters.Add(parameter)
Next
sqlcmdInsertVType.ExecuteNonQuery()
sqlconVType.Close()
ContextUtil.SetComplete()
Return rtncode
Catch excp As System.Exception
ContextUtil.SetAbort()
Throw excp
End Try
Return rtncode
End Function
end class
网页调用
Dim objVType As New Jwgl.Common.VType
Dim rtncode As Integer
objVType.VTypeID = 123
objVType.VTypeName = "sdf"
objVType.VTypeDes = "asfjlsjfl"
Dim objVTypeTx As New Jwgl.BusinessServices.VTypeTx
rtncode = objVTypeTx.Insert(objVType)
报错
未将对象指向实例