WCF Linq to SQL表-无法序列化System.Data.Linq.Table

WCF Linq to SQL表-无法序列化System.Data.Linq.Table,linq,wcf,linq-to-sql,serialization,Linq,Wcf,Linq To Sql,Serialization,我无法在演示过程中理解这一点。我有一个WCF服务,我正试图使用LINQtoSQL。然而,我所得到的只是错误System.Data.Linq.Table无法序列化。因此,我从我自己的类开始,认为我可以重新构建它,直到得到错误。问题是,即使尝试使用空类,也会出现错误。仅在我的方法中使用“As System.Linq.Table(Of xxx)”就会产生这个错误 无法序列化类型“System.Data.Linq.Table`1[LinqADMRequest2b]”。考虑使用DATACONTractAt

我无法在演示过程中理解这一点。我有一个WCF服务,我正试图使用LINQtoSQL。然而,我所得到的只是错误System.Data.Linq.Table无法序列化。因此,我从我自己的类开始,认为我可以重新构建它,直到得到错误。问题是,即使尝试使用空类,也会出现错误。仅在我的方法中使用“As System.Linq.Table(Of xxx)”就会产生这个错误

无法序列化类型“System.Data.Linq.Table`1[LinqADMRequest2b]”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列化的所有成员。有关其他受支持的类型,请参阅Microsoft.NET Framework文档。


Imports System.ServiceModel
Imports System.ServiceModel.Activation
Imports System.Runtime.Serialization
Imports System.Collections.Generic
Imports Linq

<ServiceContract(Namespace:="")> _
<ServiceBehavior(IncludeExceptionDetailInFaults:=True)> _
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _
Public Class ComplyTrackWCFService

     _
    Public Function GetTestRequests() As System.Data.Linq.Table(Of LinqADMRequest2b)
        'Dim ct As New Linq2.ComplyTrackDataContext()
        'Dim queryresults = ct.ADMRequests 'ct.ADMRequestGetListByUser("", "155")
        'Return queryresults
    End Function

End Class

<DataContract()> _
<Serializable()> _
Public Class LinqADMRequest2b
    Implements ISerializable

    Private _firstName As String
     _
    Public Property FirstName() As String
        Get
            Return _firstName
        End Get
        Set(ByVal Value As String)
            _firstName = Value
        End Set
    End Property

    Public Sub GetObjectData(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext) Implements System.Runtime.Serialization.ISerializable.GetObjectData

    End Sub

End Class

导入System.ServiceModel
导入System.ServiceModel.Activation
导入System.Runtime.Serialization
导入System.Collections.Generic
进口林克
_
_
_
公共类ComplyTrackWCFService
_
公共函数GetTestRequests()作为System.Data.Linq.Table(属于LinqAddRequest2B)
'将ct作为新Linq2.ComplyTrackDataContext()进行调整
'Dim queryresults=ct.ADMRequests'ct.ADMRequestGetListByUser(“,”155“)
'返回查询结果
端函数
末级
_
_
公共类linqadm2b
实现ISerializable
Private\u firstName作为字符串
_
公共属性FirstName()作为字符串
得到
Return\u firstName
结束
设置(ByVal值作为字符串)
_firstName=Value
端集
端属性
公共子GetObjectData(ByVal信息作为System.Runtime.Serialization.SerializationInfo,ByVal上下文作为System.Runtime.Serialization.StreamingContext)实现System.Runtime.Serialization.ISerializable.GetObjectData
端接头
末级
正如您所看到的,GetTestRequests()除了返回System.Data.Linq.Table(属于LinqADMRequest2b)之外没有做任何其他事情

我无法让LinqADMRequest2b序列化

无法序列化类型“System.Data.Linq.Table`1[LinqADMRequest2b]”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列化的所有成员。有关其他受支持的类型,请参阅Microsoft.NET Framework文档。

不要从您的服务返回
表。它是一个复杂的可查询类型,取决于其DataContext,而不是内存中的集合


Imports System.ServiceModel
Imports System.ServiceModel.Activation
Imports System.Runtime.Serialization
Imports System.Collections.Generic
Imports Linq

<ServiceContract(Namespace:="")> _
<ServiceBehavior(IncludeExceptionDetailInFaults:=True)> _
<AspNetCompatibilityRequirements(RequirementsMode:=AspNetCompatibilityRequirementsMode.Allowed)> _
Public Class ComplyTrackWCFService

     _
    Public Function GetTestRequests() As System.Data.Linq.Table(Of LinqADMRequest2b)
        'Dim ct As New Linq2.ComplyTrackDataContext()
        'Dim queryresults = ct.ADMRequests 'ct.ADMRequestGetListByUser("", "155")
        'Return queryresults
    End Function

End Class

<DataContract()> _
<Serializable()> _
Public Class LinqADMRequest2b
    Implements ISerializable

    Private _firstName As String
     _
    Public Property FirstName() As String
        Get
            Return _firstName
        End Get
        Set(ByVal Value As String)
            _firstName = Value
        End Set
    End Property

    Public Sub GetObjectData(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext) Implements System.Runtime.Serialization.ISerializable.GetObjectData

    End Sub

End Class
如果要返回
列表
,您可以通过调用
System.Linq.Enumerable.ToList()
转换为
列表

不要从您的服务返回
。它是一个复杂的可查询类型,取决于其DataContext,而不是内存中的集合

如果要返回
列表
,您可以通过调用
System.Linq.Enumerable.ToList()
转换为
列表

属性设置在您自己类的属性上

另外,最好创建轻量级的DataContract对象来传递数据,而不是像linq表这样笨重的家伙。

试着把

属性设置在您自己类的属性上

另外,最好创建轻量级的DataContract对象来传递数据,而不是像linq表这样笨重的家伙