0
我找澄清WCF Web服務數據表和數據集的行爲。返回數據表和數據集
隨着ASMX Web服務,DataTable對象不能序列化,因此在Web方法不退還。我一直使用ASMX返回DataSets。
我移動到WCF服務,我想確認此行爲與返回的數據表和數據集是該技術是相同的。我的測試已經提出了這樣的建議,但我想確認這實際上是行爲,或者是否有某些我未能成功返回DataTable的行爲。
與返回的用戶定義類型的對象而且,我一直沒能成功地返回一個數據表或數據集作爲一個用戶定義的類的公共屬性。
例如,與下面的測試類,從WCF服務返回類型CTestClass的對象返回的屬性DOB,名稱和YearsOfAge但未能返回MyDataSet。 DataSet是在構造函數中創建的。當我將GetDataSet函數作爲公共函數調用時,我的WCF Web服務成功地將DataSet返回給客戶端應用程序。
Public Class CTestClass
Public Sub New()
m_myDataSet = Me.GetDataSet
End Sub
Private m_DOB As Date
Public Property DOB() As Date
Get
Return m_DOB
End Get
Set(ByVal value As Date)
m_DOB = value
End Set
End Property
Private m_sName As String
Public Property Name() As String
Get
Return m_sName
End Get
Set(ByVal value As String)
m_sName = value
End Set
End Property
Private m_iYearsOfAge As Integer
Public Property YearsOfAge() As Integer
Get
Return m_iYearsOfAge
End Get
Set(ByVal value As Integer)
m_iYearsOfAge= value
End Set
End Property
Private m_myDataSet As DataSet
Public ReadOnly Property MyDataSet() As DataSet
Get
Return m_myDataSet
End Get
End Property
Private Function GetDataSet() As DataSet
Dim ds As New DataSet
Dim dt As New DataTable
' Create new DataTable instance.
Dim table As New DataTable
' Create four typed columns in the DataTable.
table.Columns.Add("Dosage", GetType(Integer))
table.Columns.Add("Drug", GetType(String))
table.Columns.Add("Patient", GetType(String))
table.Columns.Add("Date", GetType(DateTime))
' Add five rows with those columns filled in the DataTable.
table.Rows.Add(25, "Indocin", "David", DateTime.Now)
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now)
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now)
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now)
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now)
table.Rows.Add(500, "Paracetamol", "Simone", DateTime.Now)
ds.Tables.Add(dt)
Return ds
End Function
End Class
您需要爲序列化程序提供一個setter才能工作。 http://stackoverflow.com/questions/1702802/wcf-serialize-complex-objects-with-read-only-members – PatFromCanada
因此,我的測試類不返回DataSet的問題與該屬性是隻讀? –
有什麼方法可以讓我的服務從公共函數返回一個DataTable? –