我的任务是在 VB.NET 中实现 WCF 服务。此 WCF 服务将由我们自己的 .NET Windows Forms 应用程序使用,并提供来自 SQL Server 数据库的数据。数据将显示在第三方网格(Infragistics)中。
最初我打算使用 ADO.NET 并从 WCF 服务中的 SQL 返回数据表或数据集,但我阅读了太多鼓励我远离通过 Internet 返回数据表的文章。我不担心互操作性,但我担心流程的大小/速度。这导致我开始使用 linq to sql 返回可以通过 Internet 传递的实体 (.dbml)
问题:
我们的很多数据来自存储过程,这些存储过程返回的结果集是现有表的混合匹配,因此不匹配任何返回类型。我已经导入了一个返回(自动生成的类型)的存储过程,但是当我尝试通过 WCF 服务返回此类型时,我在跟踪日志中收到此错误:
类型 System.Data.Linq.SqlClient.SqlProvider+SingleResult'1[benchmark_prd_colour_findResult] 无法序列化。考虑使用 DataContractAttribute 属性对其进行标记,并使用 DataMemberAttribute 属性标记您想要序列化的所有成员。如果该类型是一个集合,请考虑使用 CollectionDataContractAttribute 对其进行标记。有关其他支持的类型,请参阅 Microsoft .NET Framework 文档。
请让我知道当结果与任何特定的现有表不匹配时,我需要做什么才能返回存储过程的结果