私は、VB.NET で WCF サービスを実装する任務を負っています。この WCF サービスは、独自の .NET Windows Forms アプリケーションによって使用され、SQL Server データベースからデータを提供します。データはサードパーティ グリッド (Infragistics) に表示されます。
当初、私は ADO.NET を使用し、WCF サービス内の SQL からデータ テーブルまたはデータセットを返すつもりでしたが、インターネット経由でデータ テーブルを返さないように勧める記事を読みすぎました。相互運用性については心配していませんが、プロセスのサイズ/速度が心配です。これにより、linq to sql を使用して、インターネット経由で渡すことができるエンティティ (.dbml) を返すようになりました。
問題:
多くのデータはストアド プロシージャから取得されます。これらのストアド プロシージャは、既存のテーブルの混合一致である結果セットを返すため、どの戻り値の型とも一致しません。(自動生成された型) を返すストアド プロシージャをインポートしましたが、WCF サービスを介してこの型を返そうとすると、トレースログに次のエラーが表示されます。
型 System.Data.Linq.SqlClient.SqlProvider+SingleResult'1[benchmark_prd_colour_findResult] をシリアル化できません。これを DataContractAttribute 属性でマークし、シリアル化するすべてのメンバーを DataMemberAttribute 属性でマークすることを検討してください。型がコレクションの場合は、CollectionDataContractAttribute でマークすることを検討してください。サポートされているその他の型については、Microsoft .NET Framework のドキュメントを参照してください。
結果が特定の既存のテーブルと一致しない場合に、ストアド プロシージャの結果を返すことができるようにするために何をする必要があるか教えてください。