WCF Linq to SQL表-无法序列化System.Data.Linq.Table
我无法在演示过程中理解这一点。我有一个WCF服务,我正试图使用LINQtoSQL。然而,我所得到的只是错误System.Data.Linq.Table无法序列化。因此,我从我自己的类开始,认为我可以重新构建它,直到得到错误。问题是,即使尝试使用空类,也会出现错误。仅在我的方法中使用“As System.Linq.Table(Of xxx)”就会产生这个错误 无法序列化类型“System.Data.Linq.Table`1[LinqADMRequest2b]”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列化的所有成员。有关其他受支持的类型,请参阅Microsoft.NET Framework文档。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
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表这样笨重的家伙