【发布时间】:2012-08-01 12:13:28
【问题描述】:
我的任务是在 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 属性进行序列化。如果类型 是一个集合,考虑用 集合数据合同属性。请参阅 Microsoft .NET 框架 其他受支持类型的文档。
当结果与任何特定的现有表不匹配时,请告诉我我需要做什么才能返回存储过程的结果
【问题讨论】: