2

LINQ を使用する場合、WCF サービスから何を返す必要がありますか? 例えば:

var res = from q in context.cust
          select q;

LINQ は Deferred Execution に従うため、ステートメントは for ループが実行されるまで何もしません。これは、resを返すことができないことを意味します。じゃあ何を返せばいいの?WCF サービスからデータを返すたびに、for ループを記述してオブジェクトにデータを入力し、そのリストを返す必要がありますか? 切断されたアーキテクチャに従い、異なる層間および Web サービスまたは WCF サービスからデータを移動するのに理想的な ADO.NET DataSet に相当するものはありませんか?

4

3 に答える 3

2

データが実際に要求されるまで実行は延期されます。これは for ループである可能性がありますが、WCF 経由で転送するためにシリアル化する必要がある場合でもあります。WCF サービスが IEnumerable を返すようにすると、クエリが実行され、結果が返されます。

于 2010-08-23T08:26:24.740 に答える
1

IEnumerable<cust>WCFシリアライザーとして返すと、クエリを実行する必要があります。

しかし、私は通常そうします

var res = (from q in context.cust select q).ToList();
于 2010-08-23T08:26:39.077 に答える
1

クエリで言及されているコンテキストのため、結果を配列またはリストに変換してクエリを明示的に実行する必要があります。コンテキストはおそらく Linq-To-Sql または EF に関連しており、コンテキストが既に閉じられているため、シリアル化中に遅延実行が失敗する可能性が高くなります。

于 2010-08-23T08:48:39.243 に答える