如何传对象参数进入COM+ ?

Donald_fu 2003-08-30 09:35:40
按照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)


报错
未将对象指向实例
...全文
20 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rqxiang 2003-08-30
  • 打赏
  • 举报
回复
学习!
saucer 2003-08-30
  • 打赏
  • 举报
回复
how could this code get compiled?

Public Property VTypeID() As Integer '<--it is an integer
Get
....
Return "" '<----return ""????
End Get

2. change
Dim parameters As SqlParameter()
===>
Dim parameters(2) As SqlParameter

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧