2012-02-02 15 views
1

私は、接続しているデータベースに書き込んだストアドプロシージャの結果に対してエンティティフレームワークを使用して複合型を作成しました。私は今、ストアドプロシージャからの結果を返すWebサービスを作成しています(つまり、作成したばかりの複合型のコレクション)。私は特にWCFサービスからSOAP XMLを返すように求められました。 WCFサービスはコンシューマの設定に基づいて最も適切なレスポンスを返すことを自動的に処理することを理解していました。つまり、ObjectResultをXMLに変換して返すのでしょうか?または、最初にリスト<に変換する必要がありますか?もしそうなら、単にオブジェクトの結果をループするよりも効率的な方法がありますか?Return List <ComplexType> ObjectResult <ComplexType>から - それはXMLですか?

ありがとう、本当にありがとうございました。

EDIT:この場合の消費者はサーバー側のコードになることを説明しなければなりません。になります。クライアントが要求している場合はXMLを返します。

答えて

4

ObjectResult<T>として実装IEnumerable<T>、あなたはIEnumerable拡張メソッドを使用し、使用してTの配列を取得することができます

ObjectResult<ComplexType> res = ....; 
ComplexType[] array = res.ToArray<ComplexType>(); // res.ToArray() is also fine because of type inference 

またComplexTypeが直列であることを確認してください。

+0

あなたのお返事ありがとうございます、ありがとうございます。どのようにしてComplexTypeが直列化可能であることを確認できますか?私はそれがXMLに変換される必要があると仮定しています。 –

+0

正確には、クラスはXMLに変換できるように、シリアライズ可能でなければなりません。たとえば、http://msdn.microsoft.com/en-us/library/ms731073.aspxを参照してください。 – ken2k

+1

私のクラスはエンティティモデルの複雑なクラスですが、これはもはやトリッキーなものになりますか? –

-2

は、我々が直接ToList()

using (var ts = new YourEntityFramework()) 
{ 
    List<complex_object> lst = ts.YourSp().ToList(); 
} 

たObjectResultがToListメソッドを使用して変換され、呼び出すことができます()。そうすれば、私たちのデータアクセスレイヤーとリストでObjectResultを使用して、他のレイヤーに渡すことができます。

+0

'DB_EmployeeEntities'、' GetSPITems'と元の質問との間には関係がありますか? –

+0

'ObjectResult 'に 'ToList'の定義が含まれておらず、 'ObjectResult '型の最初の引数を受け入れる拡張メソッド 'ToList'が見つかりませんでした – Jasmine

関連する問題